宾馆里有100个房间,从1-100编了号。
第一个服务员,把所有的房间都打开了。
第二个服务员,把所有编号是2的倍数的房间都做相反处理。
第三个服务员,把所有编号是3的倍数的房间都做相反处理。
以后每个服务员都是如此操作。
当第100个服务员来过以后,哪几扇门是打开的?
注意:所谓相反处理,就是开着的门关上,关上的门打开
#include <iostream>
using namespace std;
#define MAXN 110
int a[MAXN];
int main(){
int first=1;
for(int i=1;i<=100;++i) a[i]=0;
for(int i=1;i<=100;++i){
for(int j=1;j<=100;++j){
if(j%i==0) a[j] = !a[j];
}
}
for(int i=1;i<=100;++i){
if(a[i]){
if(first)first=0;else(cout << " ");
cout << i;
}
}
}