Check whether the number can be made perfect square after adding 1

Given an integer N, the task is to check whether N the given number can be made a perfect square after adding 1 to it.

Examples:

Input: 3
Output: Yes
3 + 1 = 4 which is a perfect square i.e. 22

Input: 5
Output: No
5 + 1 = 6 which is not a perfect square.

Approach: Check whether n + 1 is a perfect square or not by taking the square root of n + 1 and checking whether it is an integer. If it is then n + 1 is a perfect square and n is a sunny number.

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function that returns true
// if x is a perfect square
bool isPerfectSquare(long double x)
{
  
    // Find floating point value of
    // square root of x
    long double sr = sqrt(x);
  
    // If square root is an integer
    return ((sr - floor(sr)) == 0);
}
  
// Function that returns true
// if n is a sunny number
bool isSunnyNum(int n)
{
  
    // If (n + 1) is a perfect square
    if (isPerfectSquare(n + 1))
        return true;
    return false;
}
  
// Driver code
int main()
{
    int n = 3;
  
    if (isSunnyNum(n))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}

chevron_right


Output:

Yes


My Personal Notes arrow_drop_up