题意:有n个初始全黑灯泡,进行n轮操作,第i轮操作,对第i,2i,3i...改变其状态,问最终有几个灯是亮的。
思路:
对于一个数i,只要它只有偶数个因子,那么它肯定是暗的。
所以只要统计有奇数个因子数的个数。
对于36,有(1,36),(2,18),(3,12),(4,9),6。
所以对于可以开平方的数,它只有奇数个因子。
所以只要统计[1,n]可以开平方的数个数,就是答案,即sqrt(n)。
假设x=sqrt(n);所有[1,x]的数平方都小于等于n。
class Solution {
public:
int bulbSwitch(int n) {
return sqrt(n);
}
};