信奥一本通例题5.3开关门
例5.3开关门
解题思路:
根据题意:
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;
}