DUTOJ-1003: Zeratul的军训游戏

军训休息的时候,教官让大家做了一个游戏: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;
}

猜你喜欢

转载自blog.csdn.net/l1558198727/article/details/80186653