开灯问题,有n(n<100)盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*0表示关灯,1表示开灯*/
int n,k,a[101],i,b,c,d;
printf("输入人数");
scanf("%d",&k);
printf("输入灯的数目");
scanf("%d",&n);
for(i=1;i<101;i++)
{
a[i]=0;
}
for(b=1;b<=k;k++)
{
for(c=1;c<=n;c++)
{
if(c%b==0)
{
if(a[c]==0)
{
a[c]=1;
}else
{
a[c]=0;
}
}
}
}
for(d=1;d<=n;d++)
if(a[d]==1){
printf("%d",d);
}
}
为什么输出不了结果啊?
看代码比写代码麻烦,写一个你作参考……