传送门UVa 10110 - Light, more light
一开始我还是想建一个 2^32 - 1的数组呢...果然我还是图样.
因为只要是不能开方的数, 他的约数总是成对的.
所以题目就变成了判断一个数开方是不是整数.
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
unsigned int n;
while (scanf("%d", &n) && n)
{
int a = floor(sqrt(n) + 0.5);
if (a * a == n)
printf("yes\n");
else
printf("no\n");
}
return 0;
}