开灯问题
时间限制:3000 ms | 内存限制:65535 KB
难度:1
-
描述
-
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000
-
输入
- 输入一组数据:n和k 输出
- 输出开着的灯编号 样例输入
-
7 3
样例输出
-
1 5 6 7
-
-
-
-
#include<iostream> using namespace std; int main() { int n,k; while(cin>>n>>k) { int a[2000]={0},j,l,i; for(j=1;j<=k;j++) { for(l=1;l<=n;l++) { if(l%j==0) { if(a[l]==0) a[l]=1; else a[l]=0; } //cout<<a[l]<<" "; } //cout<<endl; } for(i=1;i<=n;i++) if(a[i]==1) cout<<i<<" "; cout<<endl; } return 0; }