曾经有这么一则故事:古代印度有位宰相发明了国际象棋后,国王就想奖励他,宰相说,那就把棋盘上的第一格加一粒米,第二格上加两粒米,这样成倍增加,直到这棋盘上的64格都加满,你就奖励我这么多粒米吧。
现在我们都知道, 这是个天文数字,国王,包括世界上的所有人都无法满足他这一要求。现在我们知道,这个米粒的总数就是2的64方减1。可是我说,如果我就是那位国王,我就跟他说,如果这64格中的每粒米都是一名士兵的话,那么我带领这些士兵排成一排,我站在排头,编号为1,后面的士兵依次编号为2,3,4,5,6,。。。。。。。。一直到最后一位(也就是2的64次方的那位),每个士兵的编号不变,就象他的身份号。然后,把最后一位士兵(编号为2的64次方的那一位)插到我的下位,倒数第二位的士兵插到2号士兵的下位,倒数第三位的士兵插到3号士兵的下位,由此类推,直到最中间的那两位,这样排好后算一个轮回的话。那么再以第一个轮回插完之后的排序,再按我上面说的方式又进行第二轮回的插入,直到这一轮回的最中间那两位,这样算第二个轮回,那么你知道需要多少个轮回后,又会重新回到编号为1,2,3,4,5,6,7,8,9,。。。。。。。。(一直到最后一位编号为2的64次方的那一位)]这样的排序呢!我想这位宰相也一定会目瞪口呆的,但是我说,我能知道需要多少个这样的轮回,而且这个数字不大,只用65个这样的轮回。真的吗?也许谁也不会相信。那么你就听我下面来说说这个理由。
我们就先以1到10这样10个数字做一个排列,请看下图:
原序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
第一轮回后 | 1 | 10 | 2 | 9 | 3 | 8 | 4 | 7 | 5 | 6 |
第二轮回后 | 1 | 6 | 10 | 5 | 2 | 7 | 9 | 4 | 3 | 8 |
第三轮回后 | 1 | 8 | 6 | 3 | 10 | 4 | 5 | 9 | 2 | 7 |
第四轮回后 | 1 | 7 | 8 | 2 | 6 | 9 | 3 | 5 | 10 | 4 |
第五轮回后 | 1 | 4 | 7 | 10 | 8 | 5 | 2 | 3 | 6 | 9 |
第六轮回后 | 1 | 9 | 4 | 6 | 7 | 3 | 10 | 2 | 8 | 5 |
第七轮回后 | 1 | 5 | 9 | 8 | 4 | 2 | 6 | 10 | 7 | 3 |
第八轮回后 | 1 | 3 | 5 | 7 | 9 | 10 | 8 | 6 | 4 | 2 |
第九轮回后 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
从上图中,我们可以找到每一个编号在每一轮回中的排列规律:我们用N表示这样的排列的总编号数,用n来表示每一位的身份号,那么当那一位的身份号为奇数时,它下一轮回所对应的士兵的身份号就是(n+1)/2,比如身份号9的所对应的下一轮回的士兵的身份号就是5,编号7的下一轮回所对应的士兵的身份号为4(我们从上图中可以看出);如果那一位的身份号为偶数时,那么它下一轮回所对应的身份号就是(N+1)-n/2,比如10的下面就是6,8的下面就是7。你们从图中看看,是不是每个数字都对?
我们也就知道总编号数从4到33这样比较小的几位数的轮回数了,看下面:
总序号数 | 轮回数 | 总序号数 | 轮回数 | 总序号数 | 轮回数 | 总序号数 | 轮回数 | 总序号数 | 轮回数 |
4 | 3 | 10 | 9 | 16 | 5 | 22 | 7 | 28 | 17 |
5 | 3 | 11 | 6 | 17 | 5 | 23 | 12 | 29 | 9 |
6 | 5 | 12 | 11 | 18 | 12 | 24 | 23 | 30 | 29 |
7 | 6 | 13 | 10 | 19 | 18 | 25 | 21 | 31 | 30 |
8 | 4 | 14 | 9 | 20 | 12 | 26 | 8 | 32 | 6 |
9 | 4 | 15 | 14 | 21 | 10 | 27 | 26 | 33 | 6 |
从上表可以知道它的最多轮回数也不会超过N-1,而且只要是2的n次方同2的n次+1,它们的轮回次数就都是n+1。
那么从以上的排列规律中,我们也就可以推算出,2的64次方,这么多的士兵,他们的需要经过多少轮回才回复到1,2,3,4,5,6,7,8,9,。。。。。。。。。一直到2的64次方这样的排列呢?2的64次方那么它的总轮回数就应该是N+1,等于65个轮回。同时,我们也可以用上面所使用的公式,就以最后一名士兵的身份号为例,他的身份号为2的64次方,而2的64次方是偶数,它的下一轮回所对应的士兵的身份号,用偶数的公式(N+1)-n/2,计算后得出,就是2的63次方+1,而2的63次方+1是奇数,就用奇数的公式(n+1)/2,计算后得出,它的下一轮回所对应的士兵的身份号就是2的62次方+1 。。。。。。。129,65,33,17,9,5,3,2。2用偶数公式(N+1)-n/2计算,就又回到2的64次方,回到原来的身份号上,这样刚好经过了65个轮回,你们说是不是?
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.