問題
有 n 盞燈,編號 1~n 。第一個人把所有的燈打開,第二個人按下所有編號為 2 的倍數(shù)的開關(guān)(這些燈將被關(guān)掉),第三個人按下所有編號為 3 的倍數(shù)的開關(guān)(其中關(guān)掉的燈將被打開,開著的將被關(guān)閉),以此類推 。
一共有 k 個人,問最后有哪些燈開著?
樣例輸入:7 3
樣例輸出:1 5 6 7
解決
#include<string.h>
#define MAX 1010
int lights[MAX];
int main(){
int n,k;
scanf("%d %d",&n,&k);
//all lights off
memset(lights,0,sizeof(lights));
for(int i=1;i<=k;++i){
for(int j=1;j<=n;++j){
if(j%i==0) lights[j]=!lights[j];
}
}
for(int i=1;i<=n;++i){
if(lights[i]) printf("%d ",i);
}
printf("\n");
return 0;
}```