C语言·XDOJ练习·反复无常的墙头灯

C语言·XDOJ练习·反复无常的墙头灯

题目描述:
一间教室里有n盏灯,编号从1-n,开始时全部是关闭状态,
现在有m个人进入教室,第1个人把所有灯打开,
第2个人只按下所有编号为2的倍数的开关(此时,这些灯会关闭),
第三个人按下所有编号为3的倍数的开关(此时,关闭状态的灯会打开,打开状态的灯会关闭)。
依次类推,直到所有人进入,请问最后有那些编号的灯开着。

输入描述
输入两个整数n和m,其中m<=n<=100。

输出描述
输出最后开着灯的编号

输入样例
7 5

输出样例:
1 4 6 7

#include
int main()
{
     
	/*亮的状态=1,灭的状态=0*/
	int num,i;
	int m,n;//m<=n<=100
	scanf("%d %d",&n,&m);
	int a[n]={
     0};
	for(num=1;num<=m;num++)//人不断进来 
	{
     
		for(i=0;i<n;i++)//每个人的控制 
		{
     
			if((i+1)%num==0)//如果满足操控条件 
			{
     
				if(a[i]==0)
				{
     
					a[i]=1;
				}
				else if(a[i]==1)
				{
     
					a[i]=0;
				}
			}
		}
	}
	/*结束后*/
	for(i=0;i<n;i++)
	{
     
		if(a[i]==1)
		{
     
			printf("%d ",i+1);
		}
	} 
}

你可能感兴趣的:(#C语言练习,c语言)