319. Bulb Switcher

来源:互联网 发布:centos7 nginx 访问 编辑:程序博客网 时间:2024/06/05 04:44

这道题给了我们n个灯泡,第一次打开所有的灯泡,第二次每两个更改灯泡的状态,第三次每三个更改灯泡的状态,以此类推,第n次每n个更改灯泡的状态。让我们求n次后,所有亮的灯泡的个数。

感觉智商被碾压。

这其实是个找规律题。被按了偶数次的灯是灭的,被按了奇数次的灯是亮的。举个例子,n = 12时,编号为12的灯,在第1次,第12次;第2次,第6次;第3次,第4次一定会被执行Switch操作,这样的话,编号为12的等肯定为灭。但是n = 36时,跟n = 12时差不多,但是!多出来一个 36 = 6 * 6。第6个灯被按了一次,之后不会被按第二次!所以能被开方成整数的数都是被按了奇数次的,因此这道题变成了找完全平方数的个数。

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

丧心病狂。