Switch Game
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15008 Accepted Submission(s): 9158
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.
Author
LL
Source
题意:
先把这些灯标上号,1 2 3 4 5 6 7 8 ……无穷 首先全是关的,也就是全是0 第一次操作 ,标号是1的倍数,全都变成相反的状态,也就是全变成1.。 第二次操作 ,标号是2的倍数,全都变成相反的状态,你可以看下,2 4 6……变成了0.。。 第三次操作 ,标号是3的倍数,全都变成相反的状态,你可以看下,3 6 9…… 他问你 N 号台灯最后 变成了 什么状态, 例如 1号灯,最后变成了1,不管多少次操作都是1.。 例如 5号灯 最后变成了0,不管多少次操作都是0.。 当操作次数大于N的时候 N的状态就不会改变了,因为N不会是M(M>N)的倍数。。
题解:
思路很简单就是求n有几个约数(包括1和自身)如果有奇数个约数,则是变奇数次,结果也就是1;否则为0
AC代码:
#include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<string> #include<cstdlib> #include<iomanip> #include<algorithm> typedef long long LL; using namespace std; int main() { int n,k,i; while(scanf("%d",&n)!=EOF) { k=0; for(i=1;i<=n;i++) { if(n%i==0) k++; } if(k%2==0) printf("0\n"); else printf("1\n"); } return 0; }
时间: 2024-08-12 16:34:50