初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。
第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。
示例1:
思路: 题意说第 轮改变所有编号为 的倍数的灯泡,最后找到亮的灯泡。。可转化为 在 内有多少个数的约数为奇数。我们知道约数的个数是成对存在的,如果存在一个数 是 的约数,那么 也是它的约数,既然要找到约数的个数是奇数个,那么这个数一定是完全平方数。即题意可转化为 中有多少个完全平方数。根据数论 中有 个完全平方数。
代码:
/**
* @param {number} n
* @return {number}
*/
var bulbSwitch = function(n) {
return parseInt(Math.sqrt(n));
};