备案的网站建设书是什么,ci框架建设网站,如何做一个公司网站,钓鱼网站制作教程319. 灯泡开关
初始时有 n 个灯泡处于关闭状态。第一轮#xff0c;你将会打开所有灯泡。接下来的第二轮#xff0c;你将会每两个灯泡关闭一个。
第三轮#xff0c;你每三个灯泡就切换一个灯泡的开关#xff08;即#xff0c;打开变关闭#xff0c;关闭变打开#xff0…319. 灯泡开关
初始时有 n 个灯泡处于关闭状态。第一轮你将会打开所有灯泡。接下来的第二轮你将会每两个灯泡关闭一个。
第三轮你每三个灯泡就切换一个灯泡的开关即打开变关闭关闭变打开。第 i 轮你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。 示例 1 输入n 3
输出1
解释
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 你应该返回 1因为只有一个灯泡还亮着。示例 2输入n 0
输出0示例 3输入n 1
输出1解题思路
对于每个灯泡i来说只要该灯泡被切换开关的次数为奇数次的时候该灯泡最终会处于亮着的状态。而该灯泡被切换开关的次数为偶数次的时候该灯泡最终会处于不亮着的状态对于第i个灯泡来说能出现开关改变的情况只能出现在其约数x的轮次中例如第3个灯泡3的约数为1和3因此若想被改变只能在第一轮和第三轮中进行修改并且我们发现约数往往都是成对例如8的约数为1824.也就是说往往都是偶数的而其中的特例就是一些完全平方数例如9的约数为193因为3*39但是因为两个约数是相同的因此完全平方数就会产生奇数个约数。因此我们需要统计的是完全平方数的个数只需要通过sqrt(n)求出完全平方数的个数即可。
代码
class Solution {
public:int bulbSwitch(int n) {return sqrt(0.5n);}
};