题目描述:

初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。

第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。

找出并返回 n 轮后有多少个亮着的灯泡。

示例1:

输入:n = 3
输出:1
解释:
初始时, 灯泡状态 [关闭, 关闭, 关闭].
第一轮后, 灯泡状态 [开启, 开启, 开启].
第二轮后, 灯泡状态 [开启, 关闭, 开启].
第三轮后, 灯泡状态 [开启, 关闭, 关闭].
你应该返回 1,因为只有一个灯泡还亮着。

示例2:

输入:n = 0
输出:0

示例3:

输入:n = 1
输出:1

提示:

0 <= n <= 109

代码:

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

属于数论问题,用多层循环会超时。

第 i 次改变,会每隔 i 个灯泡就切换一次灯泡状态;即第 i 次操作时,会改变所有编号为 i 的倍数的灯泡的状态。

所以编号为 a 的灯泡,只要a是x的倍数,灯泡a就会在第x次被改变状态;即灯泡a会在a的约数次操作中被改变,一共被改变的次数为a的约数的个数

灯泡只有开和关两个状态,初始为关闭状态,则偶数次操作灯泡关闭,奇数次操作灯泡打开;即灯泡编号的约数的个数为奇数时,灯泡才亮起

除了完全平方数的约束个数为奇数其他数字的约数都是成双成对出现,均为偶数

对于灯泡1~n,判断 i 是否为完全平方数,若是则亮起的灯泡数+1

简化求完全平方数 代码:

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

根据数论,数字1~n中,完全平方数的个数为根号n,返回sqrt(n)向下取整即可。

【leetcode】灯泡开关c++相关推荐

  1. 【LeetCode】灯泡开关Ⅰ~ Ⅳ(你还是把我关了吧)

    [LeetCode]灯泡开关Ⅰ~ Ⅳ

  2. LeetCode(319):灯泡开关 Bulb Switcher(Java)

    2019.8.6 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 每个数i必能分解成任意两个数的乘积(最少会有1*i),因此只有平方数会进行单次开关,因此只需要统计截止n的平方 ...

  3. LeetCode 5353. 灯泡开关 III

    5353. 灯泡开关 III 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排.最初,所有的灯都是关着的. 在 k  时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k ...

  4. C/C++描述 LeetCode周赛 5473. 灯泡开关 IV

    5473. 灯泡开关 IV   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博 ...

  5. 20200308: 生成每种字符都是奇数个的字符串灯泡开关 III(leetcode5352-5353)

    生成每种字符都是奇数个的字符串&灯泡开关 III 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 第一题没什么难度,StringBuilder拼接即可 第二题一开始想复杂了,用了Ha ...

  6. 用html和js制作一个控制灯泡开关效果

    用html和js制作一个控制灯泡开关效果 **用css样式来控制div图片和文本的位置,然后用js里面onclick点击事件来控制图片的更换效果来实现当前运行图的效果** 1.以下是运行的效果图 2. ...

  7. 算法 319. 灯泡开关 python

    319. 灯泡开关 思路 整数的因数 因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数. class Solution(object):def bulbSwitch( ...

  8. JavaScript 点击灯泡开关

    JavaScript 点击灯泡开关 首先导入两张照片:       方法一: <img src="./img/1.gif" alt="" onclick= ...

  9. 开关灯效果HTML,H5+CSS3打开关闭灯泡开关动画特效

    H5+CSS3打开关闭灯泡开关动画特效 html, body { font-family: Georgia, serif; font-style: italic; font-size: 4.2vmin ...

  10. JQuery实现灯泡开关【文末附源码】

    JQuery实现灯泡开关[文末附源码]

最新文章

  1. 如何使用 Arthas 定位 Spring Boot 接口超时 ?
  2. 大文件上传服务器:支持超大文件HTTP断点续传的实现办法
  3. Activiti如何实现流程的回退
  4. unity and MySql
  5. 阿里云服务器部署django项目
  6. Opencv4.5.5 + Opencv4.5.5_contrib 图像拼接
  7. 机器学习介绍jc01
  8. java property类_Java之Property类使用
  9. Entity Framework 关系约束配置
  10. 编程让鼠标一直动_相见恨晚的效率提升工具,低价捡漏可以自定义编程快捷键的鼠标...
  11. Android开机动画的动态替换
  12. Linux高级命令find,grep,sed,awk
  13. python量化交易书籍推荐_量化交易的几本书籍介绍
  14. hdoopHA的文件配置和安装hadoop和安装zookeeper
  15. omf多路径 oracle_Oracle OMF 功能详解
  16. [SV]SystemVerilog 断言(SVA)检查器库(OVL)
  17. 怎么调整计算机的音量,教你电脑声音如何调大
  18. 【python】No such file or directory的解决方法
  19. 《UnityAPI.GUI界面》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+GUI+DrawTexture+FocusControl+Toggle+立钻哥哥++OK++)
  20. Linux配置通过qq邮件服务器发送邮件

热门文章

  1. 【OpenCV-Python】28.OpenCV的特征检测——特征点检测
  2. Python数据分析《爱情公寓5》中的蜕变和成长
  3. cocos shader学习之 手电筒光效
  4. P2910Clear And Present Danger S(Floyd算法)C++
  5. 半同步/半异步模式和领导者/追随者模式
  6. 刘晓燕2021语法句型总结3之从句
  7. 从TVMConf 2020看TVM的生态环境
  8. 史上最浅显易懂的Git教程2 github
  9. 【Tars】腾讯微服务框架Tars介绍
  10. fork与pull的区别