319 燈泡開關

2021-10-02 00:23:15 字數 647 閱讀 2051

鏈結

初始時有 n 個燈泡關閉。 第 1 輪,你開啟所有的燈泡。 第 2 輪,每兩個燈泡你關閉一次。 第 3 輪,每三個燈泡切換一次開關(如果關閉則開啟,如果開啟則關閉)。第 i 輪,每 i 個燈泡切換一次開關。 對於第 n 輪,你只切換最後乙個燈泡的開關。 找出 n 輪後有多少個亮著的燈泡。

示例1:

輸入: 3

輸出: 1

解釋:

初始時, 燈泡狀態 [關閉, 關閉, 關閉].

第一輪後, 燈泡狀態 [開啟, 開啟, 開啟].

第二輪後, 燈泡狀態 [開啟, 關閉, 開啟].

第三輪後, 燈泡狀態 [開啟, 關閉, 關閉].

你應該返回 1,因為只有乙個燈泡還亮著。

解題思路

大概意思是,要在[1,n]裡頭找哪些燈泡被執行了奇數次操作

對於乙個非平方數來說(比如12),因為有成對的補數(1vs12; 2vs6),所以總是會按下2的倍數次

但是對於乙個平方數來說(比如36),因為其中有個數(6)它的補數是自己,所以會按被下奇數次

然後這道題就變成了找[1,n]中間有幾個平方數了

go語言

func bulbswitch(n int) int

319 燈泡開關

初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3輸出 1解...

319 燈泡開關

初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3 輸出 1...

319 燈泡開關

燈泡開關 初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。輸入 3 輸出...