Light, more light
大意:
一个人对走廊上的N盏灯进行开关灯,总共走过了N次,每走完一次便会回到起点;
开关灯的规则为当他第i次走过一盏灯时,如果该灯的编号能够被i整除,便把灯开或关一次;
开始时所有的灯为关闭,求出最后一盏灯的开关状态;
要点:
该题目求得是一个数N它具有几个因数;
除了1和它本身外可能还有其他因数,但是只有当N的被开方数为整数时,N的因数为奇数个,其余都为偶数个;
注意N的范围,int型的最大范围为2^31-1 该题范围为2^32-1;
代码:
#include <stdio.h>
#include <cmath>
int main(){
long long num;
while (scanf ("%lld", &num) && num != 0){
if (sqrt(num) - (int)sqrt(num) == 0)
printf ("yes\n");
else
printf ("no\n");
}
return 0;
}