信奥一本通例题5.3开关门

例5.3开关门

image-20230603120122350

解题思路:

根据题意:

1、创建一个变量表示:房间数和服务员的数

2、创建一个数组,表示宾馆的房间,数组长度就是变量,房间数,表示这个数组宾馆有数组长度个房间

3、给数组赋值1,表示把所有房间都打开

4、用for循环从2号服务员开始数数

5、用for循环从1号房间开始数数,判断是不是服务员的倍数,如果是将该房间做相反处理,打开的关闭,关闭的打开。处理完100个房间后。

6、输出打开门的房间。

程序如下:

#include <iostream>

using namespace std;

int main()
{
    int b;
    cin>>b;
    int a[b];
    for(int i=1; i<=b; i++)//把所有房间门打开
    {
        a[i]=1;
    }
    
    for(int j=2; j<=b; j++)//从第二个服务员开始数
    {
        for(int i=1; i<=b; i++)//是J服务员的倍数的房间,将做相反处理,打开的门关闭,关闭的门打开
        {
            if(i%j==0)
            {
                a[i]=!a[i];
            }
        }
    }

    for(int x=1; x<=b; x++)//输出所有门打开的房间号
    {

        if(a[x]==1)
        {
            cout<<x<<" ";
        }
    }
    return 0;
}
posted @ 2023-06-08 11:25  大龙猫先生  阅读(99)  评论(0编辑  收藏  举报