問題描述: 有編號1~100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。
現在開始按開關。
第1個同學,把所有的燈泡開關都按一次(按開關燈的編號: 1,2,3,......100)。
第2個同學,隔乙個燈按一次(按開關燈的編號: 2,4,6,......,100)。
第3個同學,隔兩個燈按一次(按開關燈的編號: 3,6,9,......,99)。
......
問題是,在第100個同學按過之後,有多少盞燈是亮著的?這些燈的編號是多少?要求給出解題思路或給出偽碼。
c#**
staticvoid
turnlights()
}for (int i = 1; i <= lights.length-1; i++)
}}
lua**
functionturnlights()
--boolean型別的燈陣列
lights={}
--i為學生號碼,依次從第乙個同學到最後乙個同學依次按燈
for i=1,100,1
dofor j=i,100,i do
lights[j]=not
lights[j]
endend
for i=1,table.getn(lights),1
doif lights[i]==true
then
(i)
endend
endturnlights()
最終得出的結果是以下編號的燈亮著14
9162536
4964
81100
4 燈泡開關問題
問題描述 有編號1 100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。現在開始按開關。第1個同學,把所有的燈泡開關都按一次 按開關燈的編號 1,2,3,100 第2個同學,隔乙個燈按一次 按開關燈的編號 2,4...
每日刷題 燈泡開關
示例 輸入 3 輸出 1 解釋 初始時,燈泡狀態 關閉,關閉,關閉 第一輪後,燈泡狀態 開啟,開啟,開啟 第二輪後,燈泡狀態 開啟,關閉,開啟 第三輪後,燈泡狀態 開啟,關閉,關閉 你應該返回 1,因為只有乙個燈泡還亮著。解答 首先給一種列舉的解法 開闢大小為n的陣列,分別針對第i 0,1,2,3 ...
319 燈泡開關
初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3輸出 1解...