開燈問題程式

2021-07-04 05:34:33 字數 973 閱讀 8571

1、開燈問題:

有n盞燈,編號為1~n。第乙個人把所有燈開啟,第二個人按下所有編號為2的倍數的開關(這些燈將被關掉),第3個人按下所有編號為3的倍數的開關(其中關掉的燈將被開啟,開著的燈將被關閉),一次類推。一共有k個人,問最後有哪些燈開著?輸入:n和k,輸出開著的燈的編號以及數目。k<= n <=1000;

方法一:採用陣列清零,然後改變陣列值,1表示燈亮,0表示燈滅。

#include #include #define maxn 65535

int a[maxn];//在函式體外定義乙個大的陣列

int main(void)

printf("%d\n", count); //列印燈亮的數目

return 0;

}

方法二:這個程式只統計燈亮的數目,每個燈的編號除以人員的編號,若為0,則改變燈的狀態,同時將改變的次數記下,然後將改變的次數與2求餘,若余為1,則表示燈亮,記錄燈亮的個數

#include #include int main(void)

if(countbulb % 2 != 0) count++;

countbulb = 0;

}clock_t cend = clock();

printf("%d\n", count);

return 0;

}

方法三:

#include #define max  65535

int main(void)

; while(j <=n)

if(count % 2 != 0) m++;

j++;

} printf("%d", m);

return 0;

}

77 開燈問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 有n盞燈,編號為1 n,第1個人把所有燈開啟,第2個人按下所有編號為2 的倍數的開關 這些燈將被關掉 第3 個人按下所有編號為3的倍數的開關 其中關掉的燈將被開啟,開著的燈將被關閉 依此類推。一共有k個人,問最後有哪些燈開著?輸...

ACM 開燈問題

有n盞燈,編號為1 n.第乙個人把所有的燈開啟,第二個人按下所有的編號為2的倍數的開關,這些燈全部被關掉,第三個人按下編號為3的倍數的開關,其中關掉的燈將被開啟,開著的燈將被關閉 以此類推,一共有k個人,問最後那些燈是開著的?輸入 n和k 輸出開著燈的編號 k n 1000 include incl...

開燈關燈問題

題目 大廳裡有100盞燈,每盞燈都編了號碼,分別為1 100。每盞燈由乙個開關來控制。開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。開始時,燈是全滅的。現在按照以下規則按動開關。第一次,將所有的燈點亮。第二次,將所有2的倍數的開關按一下。第三次,將所有3的倍數的開關按一下。以此類推。第...