五只猴子分一堆桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是这样分的。问:这堆桃至少有多少个?
先给这堆桃子加上4个,设此时共有X个桃子,最后剩下a个桃子.这样:
第一只猴子分完后还剩:(1-1/5)X=(4/5)X;
第二只猴子分完后还剩:(1-1/5)2X;
第三只猴子分完后还剩:(1-1/5)3X;
第四只猴子分完后还剩:(1-1/5)4X;
第五只猴子分完后还剩:(1-1/5)5X=(1024/3125)X;
得:a=(1024/3125)X;
要使a为整数,X最小取3125.
减去加上的4个,所以,这堆桃子最少有3121个.
=============
从上可扩展该问题,可扩展为N猴分N桃问题.
并可通过程序实现.以后会对该问题进行补充.:
#include
void main()
{
int monkey=1;//进行分桃的猴子数
int peaches,peach;//桃的总数和每次分桃的总数
peaches=1;
peach=peaches;
while(monkey<=5)
{
if(peach%5==1&&peach/5!=0)
{
peach=(peach/5)*4;
monkey++;
}//符合条件进行下一次的分桃
else
{
peaches++;
peach=peaches;
monkey=1;
}
}
printf("桃的最小总数为:%d\n",peaches);
}