论坛首页 综合技术论坛

关于万人开关门

浏览 14396 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-05  
关于万人开关门
原题:
@数学文化:#周末数学题# (转载在美国的一个朋友的电邮)我小孩上初中的第一次数学作业:有1万 个人和1万个关着的门, 第一人把所有的门打开,第二个人把所有的偶数门关上,第三个人把所有三的倍数门打开,第四个人把所有四的倍数门关上,依此类推,1万人都折腾一遍后,哪些门开着?那些门关着?

思考过程:
如果,是按顺序进行,前一人全部做完之后,后一个人才开始做,要做多久啊。
所以,先算出结果,然后,一万人同时做,瞬间解决问题,并且省了无数的无用功。

等等,题目中没说按人的顺序进行的,也就是说,这一万个人,有可能同时开始执行任务的。也有可能,随机开始的。
如果是随机开始,那根本无解。
如果是同时开始的话,全开着。任务同时开始,别人都做完了,第一个人还在做。。。最后,他把所有的门全打开了。

嗯,这就是一道扯蛋的题,所以,只要能解释得通,就算正确吧
   发表时间:2011-06-05   最后修改:2011-06-05
我觉得原题应该是每个人遍历和自己的号码整倍数的门,碰到被关上的门就打开,碰到被打开的门就关上⋯⋯

一个数有多少个因子,就被开关多少次。
被开关偶数次的门最后是关着的,开关奇数次的最后是开着的。(和谁先上没关系哦)
只有平方数的因子数个数为奇数。

所以最后开着的门,号码都是平方数。

代码:
(1..10000).filter{|x| Math.sqrt(x).integer?}


结果:

1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000
0 请登录后投票
   发表时间:2011-06-05  
那就太复杂了。这不是程序题,是数学题,初一的。所以原题应该没错。我呢,只是觉得数据量太大,发个牢骚而已。


night_stalker 写道
我觉得原题应该是每个人遍历和自己的号码整倍数的门,碰到被关上的门就打开,碰到被打开的门就关上⋯⋯

一个数有多少个因子,就被开关多少次。
被开关偶数次的门最后是关着的,开关奇数次的最后是开着的。(和谁先上没关系哦)
只有平方数的因子数个数为奇数。

所以最后开着的门,号码都是平方数。

代码:
(1..10000).filter{|x| Math.sqrt(x).integer?}


结果:

1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000

0 请登录后投票
   发表时间:2011-06-05  
哦,每个门只受最后一个碰它的人影响,最后一个碰它的人的号码和门相同。
1开2关3开4关5开6关⋯⋯
所以结果就是奇数门开,偶数门关 ⋯⋯
0 请登录后投票
   发表时间:2011-06-06   最后修改:2011-06-06
初一的因式分解题啊,求一个数因子的个数。
给门从1编号,编号因子个数(包括1)为偶则为开,奇则为关。
M=q1^n1*q2^n2*q3^n3.........
判断(n1+1)*(n2+1)*(n3+1)........的奇偶性即可
0 请登录后投票
   发表时间:2011-06-14  
1号门有1个人碰过
2号门有2个人碰过
3号门有3个人碰过
4号门有4个人碰过
....
答案很明显  啦
0 请登录后投票
   发表时间:2011-06-14   最后修改:2011-06-14
zhanghh321 写道
1号门有1个人碰过
2号门有2个人碰过
3号门有3个人碰过
4号门有4个人碰过
....
答案很明显  啦

-1
0 请登录后投票
   发表时间:2011-06-14  
fivestarwy 写道
初一的因式分解题啊,求一个数因子的个数。
给门从1编号,编号因子个数(包括1)为偶则为开,奇则为关。
M=q1^n1*q2^n2*q3^n3.........
判断(n1+1)*(n2+1)*(n3+1)........的奇偶性即可

+1
0 请登录后投票
   发表时间:2011-06-14  
Crusader 写道
zhanghh321 写道
1号门有1个人碰过
2号门有2个人碰过
3号门有3个人碰过
4号门有4个人碰过
....
答案很明显  啦

-1

-2
0 请登录后投票
   发表时间:2011-06-14  
Crusader 写道
fivestarwy 写道
初一的因式分解题啊,求一个数因子的个数。
给门从1编号,编号因子个数(包括1)为偶则为开,奇则为关。
M=q1^n1*q2^n2*q3^n3.........
判断(n1+1)*(n2+1)*(n3+1)........的奇偶性即可

+1



+1
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics