关灯问题
来源:互联网 发布:一个域名绑定两个ip 编辑:程序博客网 时间:2024/04/27 16:16
灯分析
原题
有100盏灯,依次编号1-100,初始都是关着的。第1次遍历,打开全部的灯;第2次遍历,关掉第2盏、第4盏等被2整除的灯;第3次打开被3整除的灯;第i次,对被i整除的灯做如下操作
如果灯开着,就关掉
如果灯关着,就打开
如此交替进行,直到100次遍历完毕,请问,还有多少盏灯亮着。
分析
这个题目比较好玩儿,路子走对了,很简单。想不对,方法就不是那么美。
例如,方向不对的话,就按照题目的意思,一遍又一遍的遍历,直到结束,时间复杂度是O(n^2)的。也能够解决问题,但是复杂了。
那么怎么办呢?上面的遍历的做法,是横向的思路,现在我们纵向思考。一盏灯,会在那几次被操作。例如编号为100的灯:
第1次能够操作,打开
第2次能够操作,关闭
第4次能够操作,打开
第5次能够操作,关闭
第10次能够操作,打开
第20次能偶操作,关闭
第25次能够操作,打开
第50次能够操作,关闭
第100次能偶操作,打开
最终编号为100的灯是打开的。再来看编号为70这盏灯:
第1次能够操作,打开
第2次能够操作,关闭
第35次能够操作,打开
第70次能够操作,关闭
最终编号为70的灯关闭着。
通过上面两个例子,我们会发现,1,2,4,5等都是能够整除100;1,2,35,70都能够整除70。 所以,编号为n的灯,有多少个因数,就有会被操作多少次。很显然,如果是偶数次,则灯一定是关着的。 那什么情况下,操作会是奇数次呢?一个数,每次分解,都是两个数相乘,只有当这两个数相同的时候,才会是偶数次。 所以,最终会亮着的灯,都能够开平方,得到一个正整数:1,4,9,16,25,36,49,64,81,100.
【分析完毕】
- 关灯问题
- 关灯问题
- 关灯问题
- 关灯问题
- 学生关灯问题
- POJ 1218 关灯问题
- 开灯关灯问题
- 画家问题(关灯问题)
- 关灯
- 洛谷2622 关灯问题II
- 高斯消元法理解关灯问题
- 洛谷 P2622 关灯问题II
- 关灯问题(数学问题,因子解决)
- [PKU 1830]关灯问题(高斯消元)
- poj 1222 关灯开灯问题 暴搜
- 舞会 关灯 黑帽子 白帽子问题
- 生物芯片(关灯问题 质因数分解定理)
- 关于Samsung Galaxy Tab的闪关灯问题
- iis 6.0上部署.net 2.0和4.0网站
- AT NEW OF 等语句的用法,例子很好,就转过来了!
- MySQL root密码重置报错:mysqladmin: connect to server at 'localhost' failed的解决方案!
- 应用之间调用 UIApplication类的OpenURL方法
- POJ1061 青蛙的约会(拓展欧几里得)
- 关灯问题
- MySQL中在含有GROUP BY的SELECT语句中显示COUNT()为0的结果
- android camera(一):camera模组CMM介绍
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
- 批量生成精灵,并实现拖拽精灵,和移动、翻转等简单动画
- Mysql图片存取
- android camera(三):camera V4L2 FIMC
- ubuntu 常用命令
- android camera(四):camera 驱动 GT2005