五只猴子分一堆桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是这样分的。问:这堆桃至少有多少个?
先给这堆桃子加上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桃问题.
并可通过程序实现.以后会对该问题进行补充.:
#includevoid 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);}