张院士谈“五猴分桃”
张景中院士
猴子分桃
有一大堆桃子,这是5只猴子的公共财产,它们要平均分配。
第一只猴子来了,它左等右等,别的猴子都不来,便动手把桃子均分成5堆,还剩了1个。它觉得自己辛苦了,当之无愧地把这1个无法分配的桃子吃掉,又拿走了5堆中的1堆。
第二只猴子来了。它不知道刚才发生的情况,又把桃子均分成5堆,可还是多了1个。它吃了这1个,拿1堆走了。
以后,每个猴子来了,都是如此办理。
请问:原来至少有多少桃子?最后至少剩多少桃子?
据说,这个问题是由英国物理学家、诺贝尔物理学奖得主狄拉克提出来的。1979年春天,美籍物理学家李政道,在跟中国科学技术大学少年班同学座谈时,也向他们提出过这个题目。当时,谁也没有能够当场作出回答,可见这个题目有点难。
你能解这个题目吗?
动脑又动手
做数学题目,光凭脑子想,是不容易找到方法和得到结果的。
我们一起来动手写写算算吧!
设原有桃x个,最后剩下y个。那么,每一只猴子连吃带拿,得到了多少桃子呢?
第一只猴子吃了1个,又拿走了剩下的(x-1)个的1/5,一共得到
它走了,这里留下的桃子还有
第二只猴子连吃带拿,得到了桃子
当第三个猴子来到时,这里还有桃子
也就是又从原数中减1、再乘4/5。
现在,我们找到解题的思路了:每来一只猴子,桃子的数目就发生变化——减1、乘4/5。所以,当第五只猴子来过后,我们已对x进行5次这样的减1、乘4/5的操作了。
注意:在写的时候,每减1之后,应添个括号,再乘4/5。这样5次之后,便得到了y。所以,我们有
这一堆符号,可真叫人眼花缭乱。要是你耐着性子,一步一步整理,应当得到
这样的一个等式,也就是
从这个式子里,我们不能断定x和y是多少。不过,因为x和y都是正整数,而4的4次方与5的4次方互素,所以5的5次方整除x+4,这样我们就可以算出x至少是
5^5-4=3125-4=3121
类似地,4的5次方整出y+4,所以y至少是
方法多样
五猴分桃,有没有简单一点的算法呢?有。
狄拉克本人,就提出过一个简单的巧妙解法。据说数学家怀德海,也提出了一个类似的解法。
奇怪的是:狄拉克和怀德海都没有想到,这个问题还有一个十分简单的解法。它只用到一点算术知识,是小学生也能算出来的。
桃子不是分不匀,总要剩下1个吗?问题的麻烦,就是因为多了1个桃子。
好。你来扮演一个助猴为乐的角色,借给猴子4个桃,这不就可以均分成5堆了嘛。反正最后还剩一大堆,你拿得回来的。
现在,让5只猴子再分一次。桃子虽然多了4个,可是第一个猴子并没有从中捞到便宜。因为这时桃子正好可以均分成5堆,它拿到的1堆,恰巧等于刚才你没有借给它们4个桃子时,它连吃带拿的数目。
这样,当第二只猴子到来时,桃子的数目,还是比你没借给它们时多了4个,又正好均分成5堆。所以,第二个猴子得到的桃子,也不多不少,和原来连吃带拿一样多。
第三、第四、第五只猴子到来时,情况也是这样。
5个猴子,每一个都恰好拿走当时桃子总数的1/5,剩下4/5;而开始的时候桃子的数目是x+4。这样,到了最后便剩下
个桃子,这比剩下的y个多4个。所以得到
同样的结论,得来全不费工夫!
为什么
不妨想一想:这一借一还究竟是怎么回事?为什么一下子就把问题简化了呢?
关键在于,猴子每来一次,桃子的数目发生了什么变化?
在你没有错给它们4个桃子的时候,那情况是:每来一只猴子之后,桃子数就减1、乘4/5,来5个猴子之后,就等于对x进行5次减1、乘4/5。
你看,减1乘4/5,再减1乘4/5,再减1乘4/5,再减1乘4/5,再减1乘4/5,这一串运算多麻烦。
要是你先借出4个桃子,使每一个猴子拿走1/5,然后再把4个桃子拿回来,结果和前面完全一样。这个过程,相当于对桃子数目加4乘4/5、再减4。也就是说:减1乘4/5,相当于加4乘4/5、再减4。用字母表示,就是
不信,你算一算,两边确实是恒等的。
这样看来,猴子每来一次,桃子数的变化有两种计算方法:一种是减1乘4/5,另一种是加4乘4/5、再减4。后一种计算方法是三步,看起来好象更麻烦了。其实,多次连续进行计算就显出它的优越性来了。你看:
加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4。
这中间有四次减4、加4,互相抵消,加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4;加4、乘4/5、减4。
总效果是:
加4、乘4/5、乘4/5、乘4/5、乘4/5、乘4/5、减4。
这是一个很好算的过程,那结果可以一下子写出来:
像这样把一个运算过程,变成另一个形变而值不变的运算过程,在数学上叫做等价方法。
思考题
1. 设有m个桃子,k只猴子,每个猴子来到之后,把桃子分成k堆,还剩下r个,它吃掉r个之后,又拿走了一堆。这样k个猴子都来了之后,至少还有多少桃子?
2. 桌子上有一壶凉开水,其中放了50克糖。一个孩子跑来,把糖水倒出一半喝掉,添上30克糖,加满水,和匀,走了。这样来过5个孩子之后,壶里还有多少糖?来过很多孩子之后,壶里的糖能增加到100克吗?
附其他两种解法
解法一
这个解法摘译自哈尔莫斯的一篇通俗文章,译者是中国传媒大学的陈见柯教授。
狄拉克
狄拉克的解法可以称之为特征向量法或不动点法,如下:
假定桃子的个数为x,考虑任一猴子处理完桃子之后,剩下的桃子数量S(x)。 这个公式相对简单,即
我们称整数x是一个解,如果用算子S操作5次以后的数为正整数。换言之,我们要找满足上述条件的最小正整数解。
注意到
我们有
因此
对一切x和y都成立。这意味着如果x和y都是解,则x和y模5的5次方同余(即,x与y的差被5的5次方整除)。反之,若x是一个解,并且y跟x模5的5次方同余,则y也是一个解。
最容易想到的解,应该是对应于特征方程
的特征向量,其解为
因此最小的正整数解为
注意:不变量(不动点、特征值、特征向量)的概念,或许是数学基本元素之一。
(作者:哈尔莫斯(Halmos))
解法二
回到最开始的方程,那里要求解方程
的正整数解,这是两个未知数x,y的一次方程。我们将它化成标准形式,即得
回想起这方程的如何来的,可以发现,实际上我们选取中间一步得到的方程
来观察更可取。这意味着
是方程的一个特解,要得出方程的所有解,只需要考察对应的齐次方程
由于这两个系数1024与3125互素,所以容易得到,该齐次方程的通解为
其中k为任意的整数。从而原方程的通解为:
其中k为任意的整数。特别地,为得到最小正整数解,只需要令k=1,这就得到
(作者:林开亮)