[leetcode]Bulb Switcher

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 ith round, you toggle every i bulb. For the nth round, you only toggle the last bulb. Find how many bulbs are on after n rounds.

e.g.  Given n = 3. 
At first, the three bulbs are [off, off, off]. After first round, the three bulbs are [on, on, on]. After second round, the three bulbs are [on, off, on]. After third round, the three bulbs are [on, off, off].
So you should return 1, because there is only one bulb is on.
先上代码再解释

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

...没错就是这么简洁。。。一个简单的数学问题,这道题其实是在问对于1-n这n个正整数,其中有多少个他们的因子数目是奇数?

好问题。。因数一定是成对出现的,除非他刚好等于该数的开平方,对吧。换言之,只有完全开平方数才有奇数个因子数。

学好数学是多么重要。。。。

posted on 2016-10-15 19:26  lazybone  阅读(100)  评论(0编辑  收藏  举报