初始时有 n 个灯泡处于关闭状态。
对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。
第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。
第 2 轮,每两个灯泡切换一次开关。 即,每两个灯泡关闭一个。
第 3 轮,每三个灯泡切换一次开关。
第 i 轮,每 i 个灯泡切换一次开关。 而第 n 轮,你只切换最后一个灯泡的开关。
找出 n 轮后有多少个亮着的灯泡。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bulb-switcher
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
正解:
思路太巧妙了!
对于每个灯泡,只有被开关奇数次才会最后被开着;而奇数次取决于其序号,当序号的因子为奇数个的时候,最后被开着
所以就要找到其乘数因子为奇数个的就行
只有完全平方数是这样
现在转换成了n以内有几个完全平方数
知道完全平方数的开根号就是小于该完全平方数的小完全平方数个数!
class Solution: def bulbSwitch(self, n: int) -> int: return int(n ** 0.5)