开关问题,有n个灯,分别由n个开关控制,拨一下开关则可以改变灯的状态(开->关 关->开)。初始状态灯都是关着的,先把每个开关都拨一下,然后拨一下2的倍数的开关,接着3的倍数,直到n的倍数,问最后有多少灯是开着的。
#include <iostream> #include <cstring> using namespace std; int main() { int n; cin>>n; while(n--) { int t, a[110], k; memset(a, 0, sizeof(a)); cin>>t; for(int i=1; i<=t; i++) { for(int j=1; i*j<=t; j++) a[i*j]=!a[i*j]; } k=0; for(int i=1; i<=t; i++) { if(a[i]==1) k++; } cout<<k<<endl; } return 0; }
原文地址:http://blog.csdn.net/wangxinxin_/article/details/46049931