本题的实质是判断一个正整数,包括1和自身在内的因数个数的奇偶性。若为奇数个,则最后灯是开着的;反之则关闭。当且仅当一个数为完全平方数时,其因数个数为奇数。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long int x;
double m;
cin>>x;
while(x!=0)
{
m=sqrt(x);
if(floor(m+0.5)==m)//避免可能存在的误差,如1变成了0.999999
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
cin>>x;
}
return 0;
}