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 0AC代码
/************************************************************************/ /* 求整数的因子个数 /************************************************************************/ #include <cstdio> #include <cmath> int main(int argc, const char* argv[]) { int nTest = 0; while (scanf("%d", &nTest) != EOF) { if (1 == nTest) ///n=1时单独考虑 { printf("%d\n", 1); } else { int nFac = 2; ///因子个数 int j = ceil(sqrt(static_cast<double>(nTest))); if (j*j == nTest) ///平方和形式、如25、防止重复计算因子 { --nFac; } for (int i=2; i<=j; ++i) { if (nTest%i == 0) { nFac += 2; } } if (nFac%2 == 0) { printf("%d\n", 0); } else { printf("%d\n", 1); } } } return 0; }