一、题目 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
// monkey.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int i = 0;
unsigned int j = 1;
unsigned int x = 0;
while (i < 5)
{
//最后拿的那个猴,刚好能拿到j个
x = 4 * j; //最后一个猴拿完以后剩下的刚好够剩下的四个猴平分
for(i=0; i<5;)
{
if(x%4 != 0) //如果不够剩下的分就停止分
break;
else
i += 1; //够分则给猴子分桃子
x = (x/4) * 5 +1; //倒着推导回去,倒数第二个猴看到有x个,同样的道理在它之前倒数第三个猴拿完以后,应该是4的整数倍
}
j += 1;
}
printf("%d",x);
return 0;
}