Switch Game
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11000 Accepted Submission(s): 6702
Problem Description
There are many lamps in a line. All of them are off at first. A series of operations are carried out on these lamps. On the i-th operation, the lamps whose numbers are the multiple of i change the condition ( on to off and off to on ).
Input
Each test case contains only a number n ( 0< n<= 10^5) in a line.
Output
Output the condition of the n-th lamp after infinity operations ( 0 – off, 1 – on ).
Sample Input
1
5
Sample Output
1
0
Hint
hint
Consider the second test case:
The initial condition : 0 0 0 0 0 …
After the first operation : 1 1 1 1 1 …
After the second operation : 1 0 1 0 1 …
After the third operation : 1 0 0 0 1 …
After the fourth operation : 1 0 0 1 1 …
After the fifth operation : 1 0 0 1 0 …
The later operations cannot change the condition of the fifth lamp any more. So the answer is 0.
#include int main() { int n, i, j; while (scanf("%d", &n) != EOF) { j = 0; for (i = 1; i放上AC代码:
题目的大意是有一排标号为1,2,3,4,5,……,n的台灯。初始状态都是灭灯的。在第一次操作的时候对序号为1的倍数的台灯改变状态(灭到亮或者是亮到灭),第二次操作时对序号为2的倍数的台灯改变状态,以此类推,如hint所示。问某只台灯的最后状态。
其实就是处理约数的问题。当操作次数大于序号后,那只台灯的状态就不会继续改变。问题就可以化简为得到某数的约数。如果约数为奇数,那么台灯为亮;否则台灯为灭。
授权协议:创作共用 署名-非商业性使用 2.5 中国大陆除注明外,本站文章均为原创;转载时请保留上述链接。