HDUOJ 2053Switch Game
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
先来说一下题目大意,就是有一排灯,初始转态为全部关闭,
之后第几次操作就把第几个灯切换状态,
第一次操作 ,标号是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
Submit
#include<stdio.h>
int main() {
int i, k, n;
while (~scanf("%d", &n)) {
k = 0;
for (i = 1; i <= n; i++) {
if (n % i == 0)
k++;
}
printf("%d\n", k % 2);
}
return 0;
}