//关灯问题
/n盏灯从1到n编号,n个人从一到n编号第一个人将灯全部关闭,
第二个将凡是2的倍数的灯打开,第三个人将3和3的倍数的灯做反处
理以后的每个人都将操作和自己的倍数相同的号码的灯 键盘输入人数第n个人结束输出灯的状态/
#include <iostream>
using namespace std;
int main()
{
int n,k;
int a[100],light=0;
int t;//操作次数
cin>>n;//n人数
cin>>k;//k灯的数量
for(int i=1;i<=n;i++)
{
t=0; //初始化次数为0
for(int j=1;j<=k;j++)
{
if(i%j==0) //人是灯 的倍数
t++; //操作次数加1
}
if(t%2==1) //操作次数是奇数的灯是亮的
{
a[light]=i; //把亮的 灯放进数组里
light++;
}
}
for(int z=0;z<light;z++)
cout<<a[z];
return 0;
}
运行结果