LeetCode 灯泡开关(数学)

题目传送
在这里插入图片描述
其实相当于就是第i轮,每i个都开关换一下(最开始都是关着的)。
那么一个数的约数轮都能把这个数给开或关一次(9能被 1 3 9各来一次)。
可以看出当约数是奇数个的时候就可以把灯开着。
因为约数都是对称的如8 的约数 1 2 4 8
1 * 8
2 * 4
而9
19
3
3
所以有奇数个因子,当一个数是完全平方数的时候,就说明那个灯的位置是开着的。那么求一下n之内有多少个完全平方数就可以了。
直接sqrt(n)就是答案,如:17 :sqrt(17)= 4 , 17内有4 3 2 1 这几个数,比开平方小的数都可以

class Solution {
    
    
public:
    int bulbSwitch(int n) {
    
    
        return ((int)(sqrt(n)));
    }
};

猜你喜欢

转载自blog.csdn.net/moasad/article/details/121345106