`

猴子分桃子

 
阅读更多

原文

题目如下:

五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?


这完全是一个数学问题。

假设这堆桃最初有X个。由第一个猴子吃掉一个,拿走一堆,可知X模5得1,即X=5*a+1.,第一个猴子走后剩下4a个桃子。

由第二个猴子吃掉一个,拿走一堆,可知4a模5得1,即4a=5*i+1,其中i>=0,解这个方程,

4a=5i+1,i>=0,由于a和i都是整数,那么i一定为奇数,否则5i+1为奇数,4a为偶数,左边不等于右边。设i=2*j+1,j>=0,则4a=10*j+6.即2a=5j+3,j一定为奇数,设j=2b+1,b>=0,则有2a=10b+8,即a=5b+4,b>=0。

可得a=5*b+4,其中b>=0,剩下16b+12个桃子。

由第三个猴子吃掉一个,拿走一堆,可知16b+12模5得1,即16b+12=5*j+1,其中j>=0,解这个方程可得b=5*c+4,其中c>=0,依次类推。

第四个猴子,得到c=5*d+4,d>=0;第五个猴子,得到d=5*e+4,e>=0。

由上得到a=5a+1=25b+21=125c+121=625d+621=3125e+3121, e>=0。

因此这堆桃至少有3121个。


假如有N个猴子,那么计算最少的桃子数目程序如下:

  1. int i=1;  
  2. int sum=0;  
  3. while(i<N)  
  4. {  
  5.     sum=5*sum+4;i++;  
  6. //循环N-1次  
  7. sum=5*sum+1; //再综合一下  

 

此时的sum即为最少的桃子数目。

分享到:
评论
1 楼 liuweinjust 2012-08-10  
分析的很好,

相关推荐

    Java 经典算法问题:五只猴子分桃子解题源码.rar

    Java 经典算法问题:五只猴子分桃子解题源码,此问题描述为:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。  第二只猴子把剩下的桃子又...

    labVIEW求猴子吃桃子

    利用labVIEW进行编写的小程序 猴子吃桃子的问题 10天里猴子一共吃了多少个桃子呢

    猴子分桃(经典算法)

    ACM上面的题目。算法很巧妙,在OJ上AC了,有兴趣的可以下载看看

    猴子吃桃子问题_猴子吃桃子问题_

    有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。采用链式数据结构实现上述求解。

    微信小游戏 跳一跳 摘桃子

    跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一跳,猴子摘桃子h5小游戏,跳一...

    算法课设——猴子吃桃子问题

    猴子吃桃子问题。有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。要求:1)采用数组数据结构实现上述求解;2)采用...

    python 海滩上有一堆桃子,五只猴子来分,问海滩上原来最少有多少个桃子?(示例)

    # 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了...

    猴子吃桃子问题数据结构课程.doc

    猴子吃桃子问题数据结构课程.doc

    JAVA编写猴子分食问题

    五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了...

    猴子吃桃子问题-数据结构课程设计.doc

    猴子吃桃子问题-数据结构课程设计.doc

    【python每日一练-猴子摘桃子】.pdf

    【python每日一练-猴子摘桃子】.pdf

    猴子吃桃问题。编程实现求第一天共摘了多少桃子?

    猴子第一天摘下若干桃子,当即吃了一半,不过瘾又多吃了一个。第二天又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前1天剩下的一半,再多一个。到第十天早上想吃时,见只剩下一个桃子了。

    java代码-猴子吃桃子

    java代码-猴子吃桃子

    猴子吃桃是一个经典的数学问题 问题描述如下:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个 以后每天猴子都吃其中的一半

    猴子吃桃#include int main() { int days = 10; // 总共的天数 int peaches = 1; // 第十天剩下的桃子数量 // 从第九天开始逆推,计算每天剩下的桃子数量 for (int i = days - 1; i &gt;= 1; i--) { peaches = ...

    猴子吃桃问题:猴子第一天摘下若干个桃子.docx

    猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾, //又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 //以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时, //...

    猴子分桃问题程序

    有5只猴子共有一堆桃,约好一起分享。第一只猴子来到后把桃平均分成5堆后还剩下一个,就吃了这一个并搬走了5堆中的一堆。第二猴子来到后不知道前一只猴子已经拿走了,它把4堆桃合在一起又平均分成5堆后,也剩下一个...

    猴子分桃代码

    甲、乙、丙3个猴子带着21个篮子去摘桃子。回来以后,发现有7个篮子装满了桃子,还有7个篮子装了半篮桃子,另外7个篮子是空的。假设7个满篮中桃子的重量都相同为a千克,7个半篮中桃子的重量也相同为b千克。在不将桃子...

    python 实现猴子分桃

    # 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,...

    python游戏猴子如何吃桃子

    python游戏猴子如何吃桃子

    猴子吃桃问题C程序

    猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想再吃时,就只剩一个桃子了。求第一...

Global site tag (gtag.js) - Google Analytics