码迷,mamicode.com
首页 > 其他好文 > 详细

智叟分牛

时间:2014-12-18 12:06:18      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:算法

    很小的时候就看到了这么一个故事。

    相传古印度有一位老人,临终前留下遗嘱,把所养的19头牛分给3个儿子。大儿子分得二分之一,老二分得四分之一,小儿子分得五分之一。按印度教规,牛被视为神灵,不能被宰杀,而父亲的遗嘱须无条件遵守。按老父亲的遗嘱,大儿子分得的牛数为:19/2=9.5,二儿子分得:19/4=4.75头,小儿子分得19/5=3.8头牛。老人死后,三位儿子一筹莫展。[1]

    还记得那时候是三年级,看书已知道答案,就是大家熟悉的借牛法,即:向其他的人借一头牛,加在一起共有20头,大儿子分得20/2=10头牛,二儿子分得20/4=5头牛,小儿子分得20/5=4头牛,共分得10+5+4=19头牛,将剩下的一头牛还给别人。当时刚好来了一个非常年轻,非常帅气的数学老师,一向心高气傲的我想考考这位老师的数学水平,于是将这道题问他。这位老师一节课后将我叫到了办公室,认真的给我解释怎么分牛,当时心中还是挺佩服他的。

    虽然早已知道答案,但心中一直有一事不明,10头牛并不是19的二分之一,为何算是正确答案呢?直到昨天,我才明白其中的奥秘。

    解释一。

    注意到,1/2+1/4+1/5=19/20,也就是说,三个儿子第一次分得的牛加起来其实并不是所有牛。假设所有牛为1,则还剩下1-19/20=1/20,按照老人的遗嘱,剩下的1/20的牛也应该让大儿子分得二分之一,老二分得四分之一,小儿子分得五分之一,此时还剩下1/20-1/20*(1/2+1/4+1/5)=1/(20*20),如此不断的分下去,那么,分得的牛数情况如下:

    大儿子:19*(1/2+1/2*1/20+1/2*1/(20*20)+...)=19/2*(1+1/20+1/(20*20)+...)

    二儿子:19*(1/4+1/4*1/20+1/4*1/(20*20)+...)=19/4*(1+1/20+1/(20*20)+...)

    小儿子:19*(1/5+1/5*1/20+1/5*1/(20*20)+...)=19/5*(1+1/20+1/(20*20)+...)

    1, 1/20, 1/(20*20), ... 是一个极限等比数列,根据等比数列公式:Sn=a1*(1-qn)/(1-q),可知

    1+1/20+1/(20*20)+...=1*(1-(1/20)n)/(1-1/20), n->无穷大=20/19

    因此,最终的分配方案为:

    大儿子:19/2*20/19=10

    二儿子:19/4*20/19=5

    小儿子:19/5*20/19=4

    解释二。

    大儿子分得二分之一,老二分得四分之一,小儿子分得五分之一,可以看成他们的分配比例。

    大儿子:二儿子:小儿子=1/2:1/4:1/5=10:5:4,因此三个儿子最终获得的牛数为:

    大儿子:19*10/(10+5+4)=10

    二儿子:19*5/(10+5+4)=5

    小儿子:19*4/(10+5+4)=4


[1] 周颖, 程序员的数学思维修炼, 清华大学出版社, P150

转载请注明:康瑞的部落 ? 智叟分牛

智叟分牛

标签:算法

原文地址:http://blog.csdn.net/kangrydotnet/article/details/42002357

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!