题目链接:UVa 10110 - Light, more light
一个整数N,如果有两个整数的乘积等于N,那么这两个数可以开关灯抵消,而如果这两个整数相等,也就是说N是可以被开方的,那么肯定抵消不了。所以这道题的关键就在于判断N是不是可以被开方的。
刚开始没看清N的范围,用了int,出现了TLE,改成long long 就好了,不知道为什么范围不够会出现这个错误。
#include <iostream>
#include <cmath>
using namespace std;
long long n;
int main()
{
while(cin>>n,n)
{
if(pow((int)sqrt(n),2) != n)
cout<<"no"<<endl;
else
cout<<"yes"<<endl;
}
return 0;
}