数学题(猴子吃桃)有五个猴子,一筐桃子,五个猴子打算把桃子平分,但是平分猴多出来一个.于是乎猴子都去睡觉了,有一个猴子先醒过来想怎么分都多一个所以他就把桃吃了一个并把剩下得桃分成五分自己拿走了一份.第二个猴子醒来时并不知道前一个猴子得作为于是他做了跟前一个猴子一样得事情,吃了一个桃然后又把桃子分成五分并拿走其中一份.第三四个猴子也分别醒来做了同样得事,当最后一个猴子醒来时,吃掉一个桃子结果剩下得桃子正好可以分成五分.问筐里面一共有多少桃.

问题描述:

数学题(猴子吃桃)
有五个猴子,一筐桃子,五个猴子打算把桃子平分,但是平分猴多出来一个.于是乎猴子都去睡觉了,有一个猴子先醒过来想怎么分都多一个所以他就把桃吃了一个并把剩下得桃分成五分自己拿走了一份.第二个猴子醒来时并不知道前一个猴子得作为于是他做了跟前一个猴子一样得事情,吃了一个桃然后又把桃子分成五分并拿走其中一份.第三四个猴子也分别醒来做了同样得事,当最后一个猴子醒来时,吃掉一个桃子结果剩下得桃子正好可以分成五分.问筐里面一共有多少桃.

共3121

11个

这个题显然可以用数列来做,设第n猴子分桃时的总数为a(n),那么
4[a(n)-1]/5=a(n+1)
上式可配成4[a(n)+4]=5[a(n+1)+4]
所以a(1)+4=(5/4)⁵[a(6)+4]
并没有6只猴子,a(6)是第五只猴子分完桃子后每只猴子分得的桃数。取最小的a(6)=4⁵-4得最小的a(1)=5⁵-4=3121,此即桃子总数的最小值。

5的5次方-4
/**
*
*/
package infon.question;
/**
* @author infon
* 2007-5-16
*/
public class DividePeach {
int peachNum;
int monkeyNum;
public DividePeach(int monkeyNum){
this.monkeyNum=monkeyNum;
}
public void run(){
System.out.println( "第 "+monkeyNum+ "只猴子拿1个桃子 ");
recursion(1);
}
private void recursion(int peach){
peach=peach*5+1;
if(1==monkeyNum){
System.out.println( "第 "+monkeyNum+ "只猴子拿 "+peach+ "个桃子 ");
System.out.println( "共有桃子: "+(peach*5+1));
}
else{
--monkeyNum;
System.out.println( "第 "+monkeyNum+ "只猴子拿 "+peach+ "个桃子 ");
recursion(peach);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new DividePeach(5).run();
}
}
刚写的,还没自己算,不知道对不对。。。运行如果
第5只猴子拿1个桃子
第4只猴子拿6个桃子
第3只猴子拿31个桃子
第2只猴子拿156个桃子
第1只猴子拿781个桃子
第1只猴子拿3906个桃子
共有桃子:19531

3121
设第一个猴子拿了x1个桃子,第二个拿了x2,...第五个拿了x5
总数 y = 5x1+1 = 5x2+1+(x1+1) -> 4x1 = 5x2+1 以此类推
4x2=5x3+1
4x3=5x4+1
4x4=5x5+1
通过迭代得到 256X1=625X5+369 -> 256(X1-X5) = 369(x5+1)
因为x1-x5 和x5+1都必须是整数
所以得到 x1-x5 = 369
x5+1=256
最后得到
x5=255 x4=319 x3=399 x2=499 x1 =624 总数3121