现在有100个标记过的电灯泡。第一个人经过这些灯时,点亮所有的灯,第二个人经过时每隔一盏灯就切换开关一次,第三个人经过时每隔两盏灯切换开关一次。请问,当第100个人经过时,还剩多少盏亮着的灯?
2015-02-02 16:05
288 查看
做了一个草图:10(纵10人)X10(横10栈灯)
第一个人:1 1 1 1 1 1 1 1 1 1
第二个人:0 1 0 1 0 1 0 1 0 1
第三个人:0 0 1 0 0 1 0 0 1 0
第四个人:0 0 0 1 0 0 0 1 0 0
第五个人:0 0 0 0 1 0 0 0 0 1
第六个人:0 0 0 0 0 1 0 0 0 0
第七个人:0 0 0 0 0 0 1 0 0 0
第八个人:0 0 0 0 0 0 0 1 0 0
第九个人:0 0 0 0 0 0 0 0 1 0
第十个人:0 0 0 0 0 0 0 0 0 1
从上面的片段中我们看到,第一盏灯:1,第二盏灯:1、2 第三盏灯:1、3 第四盏灯:1、2、4 第五盏灯:1、5 第六盏灯:1、2、3、6 第七盏灯:1、7 第八盏灯:1、2、4、8 第九盏灯:1、3、9 第四盏灯:1、2、5、10 略。
综上:相信大家已经看出来了:
凡是最后亮的灯,都被按过奇数次每盏灯被按的次数,即等于它的约数的个数,比如8号灯,它被第1、2、4、8这四个人按到,所以最后是灭的状态,再比如16号灯,它被第1、2、4、8、16这五个人按到,所以最后是开的状态。
结论:最后,只有完全平方数,其约数个数为奇数,就是亮灯的情况。
这其实就是纯粹的数学问题,没有必要用code去实现了。
第一个人:1 1 1 1 1 1 1 1 1 1
第二个人:0 1 0 1 0 1 0 1 0 1
第三个人:0 0 1 0 0 1 0 0 1 0
第四个人:0 0 0 1 0 0 0 1 0 0
第五个人:0 0 0 0 1 0 0 0 0 1
第六个人:0 0 0 0 0 1 0 0 0 0
第七个人:0 0 0 0 0 0 1 0 0 0
第八个人:0 0 0 0 0 0 0 1 0 0
第九个人:0 0 0 0 0 0 0 0 1 0
第十个人:0 0 0 0 0 0 0 0 0 1
从上面的片段中我们看到,第一盏灯:1,第二盏灯:1、2 第三盏灯:1、3 第四盏灯:1、2、4 第五盏灯:1、5 第六盏灯:1、2、3、6 第七盏灯:1、7 第八盏灯:1、2、4、8 第九盏灯:1、3、9 第四盏灯:1、2、5、10 略。
综上:相信大家已经看出来了:
凡是最后亮的灯,都被按过奇数次每盏灯被按的次数,即等于它的约数的个数,比如8号灯,它被第1、2、4、8这四个人按到,所以最后是灭的状态,再比如16号灯,它被第1、2、4、8、16这五个人按到,所以最后是开的状态。
结论:最后,只有完全平方数,其约数个数为奇数,就是亮灯的情况。
这其实就是纯粹的数学问题,没有必要用code去实现了。
相关文章推荐
- 现在有100个标记过的电灯泡。第一个人经过这些灯时,点亮所有的灯,第二个人经过时每隔一盏灯就切换开关一次,第三个人经过时每隔两盏灯切换开关一次。请问,当第100个人经过时,还剩多少盏亮着的灯?
- 现在有100个标记过的电灯泡。第一个人经过这些灯时,点亮所有的灯,第二个人经过时每隔一盏灯就切换开关一次,第三个人经过时每隔两盏灯切换开关一次。请问,当第100个人经过时,还剩多少盏亮着的灯?
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。 问第2个人,说比第一个人大两岁。 最后问第一个人,他说是10岁。请问
- 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
- CSU 1021 从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下: C(m, n) = m!/((m - n)!n!) 现在请问,如果将组合数C(m, n)写成二进制数,请问转这个二进制数末尾有多少个零。
- 柜子开关,经过第i轮的开关切换,柜子开着的还剩几个
- crontab中如何实现每隔多少天执行一次脚本
- 给定一系列x轴的点坐标,例如 1,3,7,8,9,11这些坐标升序放在数组中,现在给一根绳子,长度为4,问绳子最多能覆盖的点数有多少,例如绳子放前面只能覆盖两个点,1,3,如果放后面能覆盖4个点。
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳3级。求该青蛙跳上一个n级的台阶总共有多少种跳法,并且打印所有跳跃路径。
- 现在我要写一个定时程序定时读取该目录下的所有txt文件到数据库,并把这些txt文件转移到另外一个目录
- 编程题目——n个人坐成一圈,从第一个人开始,每次数到3的离开圈子,请问留下的最后一个人是谁?
- 一个商人骑一头骆驼去1000公里长的沙漠卖3000根胡萝卜 骆驼一次只能驮1000根胡萝卜 每工里骆驼就得吃一跟胡萝卜 请问那位商人最后能卖多少跟胡萝卜?
- 编程题目——n个人坐成一圈,从第一个人开始,每次数到3的离开圈子,请问留下的最后一个人是谁?
- 【程序23】TestAge.java 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 //问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个
- :3个瓶盖可以换一瓶可乐,一共有28个人,要保证每个人一瓶,请问最低需要买多少瓶可乐呢?
- 有27个人,一人要买一瓶饮料,三个饮料瓶能再换一瓶饮料,请问只需买多少瓶就够了
- 编程题目——n个人坐成一圈,从第一个人开始,每次数到3的离开圈子,请问留下的最后一个人是谁?