c语言:猴子分桃

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:40:00
有5只猴子,摘了若干个桃.猴子累了于是都休息了.
后来,一只猴子醒来了,把一堆桃分成了5份,但剩余一个.它将自己的那份和余出的一个吃了.之后,它又去睡了~~~
接着,另一只猴子醒了,它把剩下的四堆桃又重新分成了5份,恰好又余出一个,它也将自己的一份和余出的一个吃了~~~
............
............求:猴子们最初至少摘了多少桃...
(哎,老师自己出的变态题...)

楼上的是错的,正确的答案是3121
手工验算一个,又不难的!

#include <stdio.h>

//判断能否被合理的分配
int divide(int n,int m)
{
if(n/5==0 || n%5!=1)
{//不足5个或不能分5份多1个,分配失败
return 0;
}
if(m==1)
{//分到最后一个猴子,说明能分配成功
return 1;
}
return divide(n-n/5-1,m-1);
}

main()
{
int n;//桃子数量

for(n=1;;n++)
{
if(divide(n,5))
{//判断能否被合理的分配
printf("%d\n",n);
break;
}
}
}

买一本脑筋急转弯吧,学校门口有卖的

呵呵,最近怎么一直看到猴子分桃。答案是620~

#include <iostream>

using namespace std;

float superMonkey(int n,int n2)
/**参数说明:n是几只猴子。n2是最后最迟醒来的猴子拥有的桃数,比如在你的题目最迟醒来的猴子最少最少都要有6个桃子,才能分成五份,再吃掉剩下的一个。**/
{
if (n==1) return n2;
float x;
x = (5 * (superMonkey(n-1,n2)+1))/4;
return x;

}

int main(int argc, char *argv[])
{
for(int i=6; i<=300;i++)