//以下代码 vc6.0中编译通过。。没太明白你的意思,欢迎继续追问。
#include
#include
#define MAXN 1000+10
int a[MAXN];
int main()
{
int i, j, n, k, first = 1;
memset(a, 0, sizeof (a));
scanf("%d%d",&n, &k);
for (i=1; i<=k; i++)
for (j=1; j<=n; j++)
if (j%i==0) a[j]=!a[j];
for (i=1; i<=n; i++)
if (a[i]) {
if (first) first = 0;
else printf(" ");
printf("%d", i);
}
printf("%\n");
return 0;
}
#include
#include
#include
#define max 1000+10
int main()
{
int i,j,n,k,first=0;
int a[max];
scanf("%d%d",&n,&k);
memset(a,0,sizeof(a)); //0代表关灯,1代表开灯
for(i=1;i<=k;i++) //k个人
for(j=1;j<=n;j++) //n个灯
if(j%i==0)
a[j]=!a[j]; //取反,0变1,1变0,原来开变关,关变开
for(i=1;i<=n;i++) //最后输出a[i]的值就可以了
if(a[i])
printf("%d ", i); //不明白你的代码里面first是干嘛用的
return 0;
}
#include
main()
{
int i,j=2,x[1001],n,d,r;
scanf("%d%d",&d,&r);
for (i=1;i<=d;i++)//灯的编号
x[i]=i;
while (j<=r)
{
for (i=j;i<=d;i++) //灯数从等于人数开始
{
if (i%j==0) //是人的倍数
{
if (x[i]!=0)//不为0则要关灯
x[i]=0;
else //为0则要开灯
x[i]=i;
}
}
j++; //下一个人数
}
for (i=1;i<=d;i++)
if (x[i]!=0)
printf("%d ",x[i]);
printf("\n");
}