军训休息的时候,教官让大家做了一个游戏:k(军训的人很多,所以k非常大)
个同学站成一排,从左到右同学的编号分别为1∼k。第1s所有同学蹲下,第2s
编号为2的倍数的同学站起第3s编号为3的倍数的同学改变自己的状态(原来蹲
下的站起,原来站起的蹲下)...第n s编号为n的倍数的同学改变自己的状态,
直到n超过k,游戏结束。但由于人太多,教官感觉这样一直玩下去的话就训练
不完了- -!于是为了节省时间,教官随手指向了Zeratul,要Zeratul立即
回答他结束之后的状态是不是蹲下的。如果答错,这位倒霉的同学就要做100个
俯卧撑。你能为Zeratul解决这个问题吗?
判断k的因数的个数的奇偶个数即可
即判断小鱼等于k是不是平方数。
平方数:即有奇数个因数。
eg:
16 = 4*4
因数为1,2,4,8,16为奇数个。
代码:
#include <stdio.h>
#include <math.h>
int ispingfangshu(long long n){
double sqndouble;
int sqnint;
sqndouble = sqrt(n);
sqnint = (int)sqndouble;
if(sqnint<sqndouble){
return 0;
}else{
return 1;
}
}
int main()
{
long long n;
while(scanf("%lld",&n)!=EOF){
if(ispingfangshu(n)){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}