//因為第1個人把所有等打開,那麽只有第7個人是7的倍數,
//所以第7個人會把第7個燈關閉掉,7號燈的狀態肯定是關閉的
//所以說妳這個輸出有可能是錯誤的。
//給妳寫的完整代碼,希望能幫到妳。
#include<stdio.h>
#define?N?1000
struct?Light
{
int?num;
int?onOff;?//1打開?0關閉
};
int?main()
{
int?n,k,i;
Light?light[N];
scanf("%d?%d",&k,&n);
if(k>n||n>1000) //不符合條件的直接返回
return?0;
for(i=0;i<N;i++)?//初始化燈都是亮著的,因為第1個人會把所有燈打開
{
light[i].onOff?=?1;
light[i].num?=?i+1;
}
for(i=2;i<=k;i++)?//從第2個人開始循環,壹直到第k個
for(int?j=0;j<n;j++)
if(light[j].num%i==0&&light[j].num>=i)?//如果燈的編號是人的編號的倍數,且燈號大於人號
{
if(light[j].onOff==1)?//如果是開,就關閉,否則打開
light[j].onOff=0;
else?light[j].onOff=1;
//輸出信息
printf("i=%d?第%d號燈,狀態:%d\n",i,light[j].num,light[j].onOff);
}
for(i=0;i<n;i++)?//遍歷,輸出所有打開的燈
if(light[i].onOff==1)
printf("%d?",light[i].num);
printf("\n");
return?0;
}