[力扣leetcode319]灯泡问题
生活随笔
收集整理的這篇文章主要介紹了
[力扣leetcode319]灯泡问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
燈泡問題
問題描述
初始時有 n 個燈泡處于關閉狀態。
對某個燈泡切換開關意味著:如果燈泡狀態為關閉,那該燈泡就會被開啟;而燈泡狀態為開啟,那該燈泡就會被關閉。
第 1 輪,每個燈泡切換一次開關。即,打開所有的燈泡。
第 2 輪,每兩個燈泡切換一次開關。 即,每兩個燈泡關閉一個。
第 3 輪,每三個燈泡切換一次開關。
第 i 輪,每 i 個燈泡切換一次開關。 而第 n 輪,你只切換最后一個燈泡的開關。
找出 n 輪后有多少個亮著的燈泡。
求解
剛開始看著這道題心里想,力扣你確定這是道中等題???兩個for循環把輪數的倍數對應的燈泡切換開關不就行了。于是我洋洋灑灑兩分鐘敲完代碼。
隨便敲了個數檢驗,歐了。
然后。。。
我一看數據量,好家伙10的9次方。
痛定思痛可能不能用循環了,趕緊找了一下規律。
寫了一下n=9的時候的過程。
1 1 1 1 1 1 1 1 1
1 0 1 0 1 0 1 0 1
1 0 0 0 1 1 1 0 0
1 0 0 1 1 1 1 1 0
…
1 0 0 1 0 0 0 0 1
1,4,9這不就是完全平方數嗎?
某一個燈泡在它因子的輪數發生切換,我們只需要想哪些數有奇數個因子就好,正常來說因子必然是成對出現的,除了一類數——完全平方數,它們有一對因子是相同的。所以問題解決。
總結
以上是生活随笔為你收集整理的[力扣leetcode319]灯泡问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破解维吉尼亚密码
- 下一篇: 密码学信息理论基础2