演算法競賽 開燈問題 C

2021-08-07 21:43:04 字數 492 閱讀 5904

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

樣例輸入:7 3

樣例輸出:1 5 6 7

#include 

#define maxn 1000+10

using

namespace

std;

int a[maxn];

int main()

}cout

<< endl;

return

0;}

說明:

memset()函式的作用是將陣列a複製為0,標誌變數first控制輸出空格。

**參考《演算法競賽入門經典_劉汝佳著》**

用Lua編寫ACM演算法競賽開燈問題

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

開燈演算法問題

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

演算法競賽,第三章,開燈問題

開燈問題 描述 有 n 盞燈,編號為 1 n,第 1 個人把所有燈開啟,第 2 個人按下所有編號為 2 的倍數的開關 這些燈將被關掉 第 3 個人按下所有編號為 3 的倍數的開關 其中關掉的燈將被開啟,開著的燈將被關閉 依此類推。一共有 k 個人,問最後有哪些燈開著?輸入 n 和 k,輸出開著的燈編...