開燈問題

問題

有 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;
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容