http://poj.org/problem?id=1218
题意:门的状态有两种开或关,初始化为开,每次进行状态转换,第一次把门号是1的倍数的门状态转换,第二次把门号是2的倍数的门状态转换,......,第n次把状态是n的倍数的门状态转换,输出最后有几个门是开的状态。
#include<stdio.h> #include<string.h> int main() { int i, t,a[1010],n; scanf("%d",&t); while(t--) { scanf("%d",&n); memset(a,0,sizeof(a)); for (i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { if(j%i==0) a[j] = !a[j]; } } int cnt = 0; for (i = 1; i <= n; i ++) { if(a[i]) cnt++; } printf("%d\n",cnt); } return 0; }