您的位置:首页 > 编程语言 > C语言/C++

319. Bulb Switcher #Medium

2016-05-25 09:37 253 查看
leetcode
319. Bulb Switcher#Medium

题目大意:有编号从1到n共n盏灯,开始都是灭的。第1轮,改变每盏灯的状态;第2轮,改变编号是2的倍数的灯;..;第n轮,改变编号是n的倍数的灯。问最后有多少灯是亮的?

解法:灯在改变奇数次状态后是亮的,偶数次是灭的。每盏灯状态变换的次数其实是其编号的因数个数,而除了平方数外,所有正整数都有偶数个因数。

例如: 

8 的因数 1,2,4,8 (编号为8的灯会在第1、2、4、8轮改变状态)

9的因数  1,3,9

10的因数1,2,5,10

所以,问题的答案就是在n以内有多少个平方数(对n开方向下取整),代码如下:

class Solution {
public:
int bulbSwitch(int n) {
return (int)sqrt(n);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OJ C++ leetcode