灯泡问题

问题描述

初始时有 n 个灯泡处于关闭状态。
对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。
第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。
第 2 轮,每两个灯泡切换一次开关。 即,每两个灯泡关闭一个。
第 3 轮,每三个灯泡切换一次开关。
第 i 轮,每 i 个灯泡切换一次开关。 而第 n 轮,你只切换最后一个灯泡的开关。
找出 n 轮后有多少个亮着的灯泡。

求解
刚开始看着这道题心里想,力扣你确定这是道中等题???两个for循环把轮数的倍数对应的灯泡切换开关不就行了。于是我洋洋洒洒两分钟敲完代码。

class Solution {public:int bulbSwitch(int n) {int p=0;vector<int>mark(n,1);for(int i=0;i<n;i++){mark[i]=1;}for(int i=1;i<n;i++){for(int j=i;j<n;j=j+i+1){mark[j]=(mark[j]+1)%2;}}for(int i=0;i<n;i++){if(mark[i]==1)p++;}return p;}
};

随便敲了个数检验,欧了。

然后。。。

我一看数据量,好家伙10的9次方。
痛定思痛可能不能用循环了,赶紧找了一下规律。
写了一下n=9的时候的过程。
1 1 1 1 1 1 1 1 1
1 0 1 0 1 0 1 0 1
1 0 0 0 1 1 1 0 0
1 0 0 1 1 1 1 1 0

1 0 0 1 0 0 0 0 1
1,4,9这不就是完全平方数吗?
某一个灯泡在它因子的轮数发生切换,我们只需要想哪些数有奇数个因子就好,正常来说因子必然是成对出现的,除了一类数——完全平方数,它们有一对因子是相同的。所以问题解决。

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

[力扣leetcode319]灯泡问题相关推荐

  1. 力扣319——灯泡开关(数学)

    题目描述(中等) 初始时有 n 个灯泡处于关闭状态.第一轮,你将会打开所有灯泡.接下来的第二轮,你将会每两个灯泡关闭一个. 第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开).第 ...

  2. 力扣199场比赛 5473. 灯泡开关 IV

    房间中有 n 个灯泡,编号从 0 到 n-1 ,自左向右排成一行.最开始的时候,所有的灯泡都是 关 着的. 请你设法使得灯泡的开关状态和 target 描述的状态一致,其中 target[i] 等于 ...

  3. 力扣1002.查找常用字符

    力扣 1002. 查找常用字符 本人力扣练习已上传至码云,可互相学习借鉴. 难度-简单 题目: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表 ...

  4. 力扣解题——求根到叶子节点数字之和

    难度:中等 题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到 ...

  5. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

  6. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  7. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

最新文章

  1. GEO,以GSM2309041这套数据为例,找到需要的sra数据,SRX2159543
  2. ManageEngine保护您的浏览器
  3. [css] 用css实现饼图效果
  4. conda install 换源_科学网—Anaconda 报错Multiple Errors Encountered和添加国内镜像以及换源和恢复默认源 - 张伟的博文...
  5. sqlite3移植到arm linux
  6. python 二分查找_Python实现二分法搜索
  7. 转码服务器 作用,转码服务器工作原理介绍.pdf
  8. python的shelve库
  9. 为项目编写Readme.MD文件
  10. [Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01_04_Linux操作系统基础
  11. 猫哥教你写爬虫 044--模拟浏览器-作业
  12. MT4单均线变色代码实例
  13. 安装Jdeveloper 12C
  14. 【nvidia Xavier】感受gpu算力
  15. firefox装在linux_在 Linux 中安装 Firefox
  16. LPC1768用官方库中用寄存器开启两个硬件PWM
  17. 小实验----Cobbler自动化部署装机
  18. 运放放大倍数计算公式_独家秘笈|运算放大器分析
  19. JS中RHS引用和LHS引用的区别
  20. 搜狗拼音输入法做出最佳修改选择的设置秘密?神化黑科技专用选择键、修改键正式曝光,可望帮你轻松解决一切...

热门文章

  1. 残缺棋盘的伪代码_伪激光雷达:无人驾驶的立体视觉
  2. 如何处理数据中心电缆管理问题?
  3. 配电基础知识汇总,99%的人都收藏了!
  4. 你知道铅酸蓄电池的常见失效模式吗?
  5. java汽车生产工厂模式_什么是工厂模式java
  6. java web视频_超全面的JavaWeb视频教程
  7. 儿童猜词游戏图片_超实用的儿童社交游戏分享(听指令、认知、规则)
  8. 成功解决Error:invalid character in identifier
  9. DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略
  10. ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架