The problem is that a positive integer n is given and check if it is perfect square or not using only addition operation.
// C++ program to check if n is perfect square or not
#include<bits/stdc++.h>
using namespace std;
// This function returns true if n is perfect square, else false and uses only addition operation.
bool isPerfectSquare(int n)
{
int sum=0;
for (int i=1; sum<n; i+=2)
{
sum += i;
if (sum == n)
return true;
}
return false;
}
int main()
{
isPerfectSquare(90)? cout << "Yes\n": cout << "No\n";
isPerfectSquare(49)? cout << "Yes\n": cout << "No\n";
return 0;
}
Output:
No
Yes
Explanation:
The idea used in above program is that the sum of first n odd numbers is a perfect square. In this,from main a number is passed to isperfectsquare function which checks whether it is perfect square or not. Inside isperfectsquare a variable sum is initialized to 0, a for loop initializes a variable i to 0, for loop runs till passed n is greater than sum and i is incremented with 2. The function returns true if sum==n i.e sum of first odd numbers is equal to passed n else returns false.
0 Comment(s)