問(wèn)題
有 n 盞燈,編號(hào) 1~n 。第一個(gè)人把所有的燈打開(kāi),第二個(gè)人按下所有編號(hào)為 2 的倍數(shù)的開(kāi)關(guān)(這些燈將被關(guān)掉),第三個(gè)人按下所有編號(hào)為 3 的倍數(shù)的開(kāi)關(guān)(其中關(guān)掉的燈將被打開(kāi),開(kāi)著的將被關(guān)閉),以此類推 。
一共有 k 個(gè)人,問(wèn)最后有哪些燈開(kāi)著?
樣例輸入: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;
}```