力扣 319燈泡開關(思維題)

2021-10-08 10:19:20 字數 680 閱讀 7664

題目描述

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

示例:輸入: 3

輸出: 1 

解釋: 

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

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

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

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

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

解題思路

可以參考這位大神的部落格:

這裡就是求乙個完全平方數的例子,上面鏈結有n = 12的推導過程,最終只有1, 4, 9亮著,題目就是找小於n的所有完全數的個數

class solution(object):

def bulbswitch(self, n):

count = 0

k = 1

while k * k <= n:

count += 1

k += 1

return count

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 輪後有多少個亮著的燈泡。示例1 輸入 3 ...