五猴分桃
2016-03-17 10:58
148 查看
问题:
这里有一大堆桃子。这是5个猴子的公共财产。它们要平均分配。
第一个猴子来了。它左等右等,别的猴子都不来,便动手把桃子均分成5堆,还剩了1个。它觉得自己辛苦了,当之无愧地把这1个无法分配的桃子吃掉,又拿走了5堆中的1堆。
第二个猴子来了。它不知道刚才发生的情况,又把桃子均分成5堆,还是多了1个。它吃了这1个,拿1堆走了。
以后,每个猴子来了,都是如此办理。
请问:原来至少有多少桃子?最后至少剩多少桃子?
据说,这个问题是由大物理学家狄拉克提出来的。1979年春天,著名美籍物理学家李政道,在和中国科学技术大学少年班同学座谈时,也向他们提出过这个题目。当时,谁也没有能够当场做出回答,可见这个题目有点难。
分析:
方法一:迭代
(f(5) - 1)%5 = 0; f(5) = (f(4) - 1)/5
(f(4) - 1)%5 = 0; f(4) = (f(3) - 1)/5
(f(3) - 1)%5 = 0; f(3) = (f(2) - 1)/5
(f(2) - 1)%5 = 0; f(2) = (f(1) - 1)/5
(f(1) - 1)%5 = 0 ;f(1) = (f(0) - 1)/5
求f(0)最小值
方式二:假设
如果给第一个猴子加4个桃子则接下来五个猴子都可以平分 第五个猴子最小获得的桃子为1
((x+4)/(5*5*5*5*5))%5 =0
获得x = 3121
这里有一大堆桃子。这是5个猴子的公共财产。它们要平均分配。
第一个猴子来了。它左等右等,别的猴子都不来,便动手把桃子均分成5堆,还剩了1个。它觉得自己辛苦了,当之无愧地把这1个无法分配的桃子吃掉,又拿走了5堆中的1堆。
第二个猴子来了。它不知道刚才发生的情况,又把桃子均分成5堆,还是多了1个。它吃了这1个,拿1堆走了。
以后,每个猴子来了,都是如此办理。
请问:原来至少有多少桃子?最后至少剩多少桃子?
据说,这个问题是由大物理学家狄拉克提出来的。1979年春天,著名美籍物理学家李政道,在和中国科学技术大学少年班同学座谈时,也向他们提出过这个题目。当时,谁也没有能够当场做出回答,可见这个题目有点难。
分析:
方法一:迭代
(f(5) - 1)%5 = 0; f(5) = (f(4) - 1)/5
(f(4) - 1)%5 = 0; f(4) = (f(3) - 1)/5
(f(3) - 1)%5 = 0; f(3) = (f(2) - 1)/5
(f(2) - 1)%5 = 0; f(2) = (f(1) - 1)/5
(f(1) - 1)%5 = 0 ;f(1) = (f(0) - 1)/5
求f(0)最小值
方式二:假设
如果给第一个猴子加4个桃子则接下来五个猴子都可以平分 第五个猴子最小获得的桃子为1
((x+4)/(5*5*5*5*5))%5 =0
获得x = 3121
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析