落絮飞雁的个人网站
HDOJ2053:Switch Game
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 <=n; i++)
		{
			if (n%i==0)
			{
				j++;
			}
		}
		if (j % 2 == 0)
		{
			printf("0n");
		}
		else
		{
			printf("1n");
		}
	}
	return 0;
}

放上AC代码:

 

题目的大意是有一排标号为1,2,3,4,5,……,n的台灯。初始状态都是灭灯的。在第一次操作的时候对序号为1的倍数的台灯改变状态(灭到亮或者是亮到灭),第二次操作时对序号为2的倍数的台灯改变状态,以此类推,如hint所示。问某只台灯的最后状态。

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

原文标题:HDOJ2053:Switch Game|落絮飞雁的个人网站
授权协议:创作共用 署名-非商业性使用 2.5 中国大陆
除注明外,本站文章均为原创;转载时请保留上述链接。

发表评论

textsms
account_circle
email

落絮飞雁的个人网站

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 Ther…
扫描二维码继续阅读
2014-10-19