There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it's off or turning off if it's on). For the ith round, you toggle every i bulb. For the nth round, you only toggle the last bulb. Find how many bulbs are on after n rounds.
Example:
Given n = 3.除了平方数,所有的数都会有偶数个约数,比如6的约数(1,2,3,6),5的约数(1,5),8的约数(1,2,4,8)。
At first, the three bulbs are [off, off, off]. After first round, the three bulbs are [on, on, on]. After second round, the three bulbs are [on, off, on]. After third round, the three bulbs are [on, off, off].
So you should return 1, because there is only one bulb is on.
平方数因为有其中一个约数是重复的,所以只有奇数个不同的约数,所以最后亮起了都是平方数。题目转换成求小于n的最大开方数。代码如下:
public class Solution {
public int bulbSwitch(int n) {
return (int)Math.sqrt(n);
}
}