程序3-2 开灯问题

开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2
的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯
将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输
入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入:
7 3
样例输出:

1 5 6 7



#include<stdio.h>
int lable[1002];
int main(){
	int n,k;//  n盏灯 ,k个人 
	scanf("%d%d",&n,&k);
	for(int i = 1;i <= k;i++){
		for(int j =n;j >=1;j--){
		 if(j%i == 0){
		 	if(lable[j] == 0)
		 	lable[j] = 1;
		 	else
			lable[j] = 0;
		}
	}
}
	for(int k = 1;k <=n;k++){
		if(lable[k] == 1)
			printf("%d ",k);
	}
} 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页