首页 留言 登录
5.3宾馆里有100个房间

宾馆里有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; 
        }
    }

}

上一篇:5.4约瑟夫问题
下一篇:把数组a的第一个元素移动到数组末尾,其余的数据依次往前平移一个位置!
验证码
评论留言 (0条)