319. Bulb Switcher

来源:互联网 发布:网络名人周小平 编辑:程序博客网 时间:2024/04/29 04:31

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.

Example:

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.
题意:给出n个灯泡,每次反转第i的倍数的灯泡,则n次后,哪些灯泡还在亮。

思路:脑筋急转弯,相当于找小于n的数中,哪些数的因子的个数是奇数。平方数的因子个数是奇数。

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










0 0
原创粉丝点击