初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。
第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。
示例 1:
输入:n = 3
输出:1
解释:
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].你应该返回 1,因为只有一个灯泡还亮着。
方法一:数学
读题可得
- 每个位置的灯泡都至少被切换一次,即它们都有共同的因子数 1
- 对于第 i 个灯泡来说,只有其第“因子”轮才会切换,若其有 q 个因子,则最终被切换 q 次。因为初始状态是关闭状态,那么因子数是奇数的灯泡最终是亮着的。
- 注意到只有平方数的因子不是成对出现(如 1,2、2&