解题报告:
题目大意:有n盏灯排成一行,一开始他们的状态都是熄灭的,现在输入一个N,表示要进行n此操作,第i此操作时要改变第i的倍数盏灯的状态,即熄灭的变亮,亮的变熄灭,问操作完之后第n盏灯的状态是什么,亮的就输出1,是暗的就输出0。
简单题,因为本题没有时间上的限制,所以输入一个n,可以直接用一个数组表示当前的每个灯的状态,没做一次操作就将每个灯的状态改变一次,最后直接查询即可。
1 #include<cstdio> 2 #include<cstring> 3 int A[100000+5]; 4 int main() { 5 int n; 6 while(scanf("%d",&n)!=EOF) { 7 memset(A,0,sizeof(A)); 8 for(int i=1;i<=n;++i) { 9 for(int j=i;j<=n;j+=i) 10 A[j]^=1; 11 } 12 printf("%d\n",A[n]); 13 } 14 return 0; 15 }