1. 题目
2. 思路
(1) 找规律
- 这道题的本质是求i的因子个数,若i的因子个数为奇数,则灯泡i最后是亮的。
- 对于任意一个数,其因子必然是成对出现的,如10的因子2和5,但是,对于开平方结果为整数的数,由于存在两个因子相等,如9的因子3,因此,其因子个数为奇数。
- 通过列出前10个灯泡的结果可以发现,最后亮着的灯泡数量正好是(int)Math.sqrt(n)。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int bulbSwitch(int n) {
return (int) Math.sqrt(n);
}
}