Description
蜡笔小鑫真是又闲又淘气,他看到走廊上的灯都是灭的,就跑过去捣乱。每个灯泡都有自己的开关,用来控制灯的状态(开或者关)。如果灯灭了,按一下开关即开灯,再按一次即关灯。假设走廊里有n个灯泡,蜡笔小鑫就沿着走廊来回走n次。每次都是沿走廊走下去然后再回来,并且当他在走第i次时,都会按一下所有位置可被i整除的灯的开关(每次他都只在去的时候按下开关,回来的时候未进行任何操作),例如:n=8,i=3时,他在走第3次的时候按下了序号为3和6的灯的开关。他想知道最后一个灯泡的最终状态到底是开还是关,你能帮帮他吗?
Input
输入包含一个正整数n(n≤232-1),表示蜡笔小鑫沿着走廊来回走了n次。
Output
输出单行结果,如果最后一个灯泡是开的,输出“yes”,否则,输出“no”。
Sample Input
3
6241
8191
Sample Output
no
yes
no
解题思路:唉啊,脑子真的是废了,这一道题其实就是一个找规律的题,我硬生生的把这一道题给想复杂了。列如,8可以拆分成1、2、4、8代表着开
关开关,最后是关灯;而9却可以拆成1,3,9,代表着开关开;16可以拆成1、2、4、8、16代表着开关开关开。我们可以发现规律了,只要是能开方的数
最后一定是开灯,不能开方的数最后是关灯。
上代码:
1 #include<stdio.h>
2 #include<math.h>
3 int main()
4 {
5 long long i,n,k;
6 double q;
7 scanf("%lld",&n);
8 q=sqrt(n);
9 k=int(q);
10 if(q-k==0)
11 printf("yes\n");
12 else
13 printf("no\n");
14 return 0;
15 }