HDOJ 2053 Switch Game【规律题】

Switch Game

                                                                      Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
                                                                                          Total Submission(s): 12887    Accepted Submission(s): 7839


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.

题目意思:

有一些灯排成一条直线。所有的灯在刚开始都是关闭的,在对灯进行一系列操作后:在第 i 次操作的时候,调整所有标号是 i 的倍数的灯的状态(原本打开的灯将它关闭,原本关闭的将它打开)。下附代码。

#include<stdio.h>
int main()
{
	int i,k,n;
	while(scanf("%d",&n)!=EOF)
	{
		k=0;
		for(i=1;i<=n;i++)
		if(n%i==0) 
		k++;
		printf("%d\n",k%2);
	}
	return 0;
}
一开始看到这个题,打算用数组,可是10^5太大了,用的数组话可能会超时,此路不通;因此用计数器,具体原理是 只要第n个数变过,第m(m>n)次第n个数不再变,而且输出只有0和1,所以计数器对2取余即可。

你可能感兴趣的:(HDOJ 2053 Switch Game【规律题】)