有n盞燈,編號爲1-n 第一個人把所有的燈都打開,第二個人按下所有編號爲2的倍數的開關(這些燈將被關掉),第3個人按下所有編號爲3的倍數的開關(其中關掉的燈將被打開,開着的燈將被關掉),依此類推。一共有k個人,問最後有哪些燈開着?輸入:n和k,輸出開着的燈的編號。k<=n<=1000
樣例輸入:7 3
樣例輸出:1 5 6 7
#include<iostream>
#include<string>
using namespace std;
#define MAXN 1000+10
int a[MAXN];
int main()
{
int i, j, n, k, first = 1;
memset(a, 0, sizeof(a));//把數組a清零
cin>>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 cout<<" ";
cout<<i;
}
cout<<endl;
return 0;
}
題目中如果燈的數量和人的數量相等,則題意就爲“輸出1~n的完全平方數”