[leetcode]319. Bulb Switcher

[leetcode]319. Bulb Switcher


Analysis

今天被微博上的孙艺兴bot笑死,哈哈哈哈哈—— [每天刷题并不难0.0]

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 i-th round, you toggle every i bulb. For the n-th round, you only toggle the last bulb. Find how many bulbs are on after n rounds.
在这里插入图片描述
Explanation:
A light will be toggled only during the round of its factors, e.g. number 6 light will be toggled at 1,2,3,6 and light 12 will be toggled at 1,2,3,4,6,12. The final state of a light is on and off only depends on if the number of its factor is odd or even. If odd, the light is on and if even the light is off. The number of one number’s factor is odd if and only if it is a perfect square!
So we will only need to loop to find all the perfect squares that are smaller than n!
(讨论区搬运工)

Implement

class Solution {
public:
    int bulbSwitch(int n) {
        int res = 0;
        for(int i=1; i*i<=n; i++){
            res++;
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_32135877/article/details/85091129