HDOJ2053:Switch Game

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所示。问某只台灯的最后状态。

其实就是处理约数的问题。当操作次数大于序号后,那只台灯的状态就不会继续改变。问题就可以化简为得到某数的约数。如果约数为奇数,那么台灯为亮;否则台灯为灭。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注