c语言:猴子分桃

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

呵呵,最近怎么一直看到猴子分桃。答案是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++)
{
cout<<superMonkey(5,i)<<"\n";//5只猴子,为了找出原先最少必须有几个,用循环求答案直到找到一个整数。
}
cin.get();
}

/**接下来出现的一堆数字就是一开始的桃数。不能有小数点的,所以要找的是第一个出现的整数。我放300次循环因为我稍微试过了,620是原先必须有的最少桃数(第一个出现的整数就是620啊)。你可以稍微改改,放个检测整数的函数,就不用看到一堆数字了。还可以该题目成10只猴子什么的。**/
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-13
猴子偷桃
设桃子总数为peach,第一只猴子分得桃子为x1,第二只猴子为x2……第五只猴子为x5
peach= 5 * x1 +1;
4 * x1 = 5 * x2 +1;
……
4 * x4 = 5 * x5+ 1;
4(x1 +1) = 5(x2 + 1), 4(x2 + 1) = 5(x3 +1)..., 4(x4 +1) = 5(x5 +1)
所以由 (x1 +1) = (5/4)^4 * (x5 +1)推出
--> (x5 +1) = (4/5)^4 * (x1+1)
(x5 + 1) =(x1+1)*256/625,由于整数,令 x1 +1=625,则x1=624;
那么x5 +1=256,x5=255;
x2=499;
x3=399;
x4=319;
peach= 5 * x1 +1=3121
第2个回答  推荐于2018-04-11
楼上的是错的,正确的答案是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;
}
}
}本回答被网友采纳
第3个回答  2008-06-17
买一本脑筋急转弯吧,学校门口有卖的

用C语言编一程序 猴子分桃的问题
1,第5只猴子有桃子吃;2,第5只猴子在醒后吃桃子之前把桃子平均分成了5份,而且还多了一个桃子(隐含意义是第5只猴子吃了2个桃子,剩下4个桃子,这样才满足摘的数量最少);那么我们就知道了,最后一个猴子(将猴子数量扩展为未知,猴子数为n)醒后还有n+1个桃子;第n-1个猴子醒后还有n*(n...

亲猴子分桃问题的c语言编程拜求!详加注释!谢谢!
t-1); \/*采用递归调用的方法,如果第一只猴子可以分到桃,则参数变为剩下的桃子和剩下的猴子,按照同样的方法进行分桃*\/}\/*用来判断总共total个桃子,t只猴子,

猴子分桃
\/\/公式n^5+1-n include<stdio.h> using namespace std;int main(){ long long n,num,sum,a[21],i;a[1]=1;for(i=2;i<=20;i++){ a[i]=a[i-1]*5+16;} while(scanf("%I64d",&n)&&n){ num=a[n];sum=0;printf("%I64d ",num);while(n--){ num--;sum++;num=num...

猴子摘桃问题?我写的c语言程序哪里出错了。
printf("若猴子拿到和吃掉的桃总数为:");printf("%d\\n",a[k]);printf("则每只猴子拿到和吃掉的桃数\\n");printf("第一只猴子拿到和吃掉的桃数:");printf("%d\\n",a[k]=(a[k]-1)\/5+1);printf("第二只猴子拿到和吃掉的桃数:");printf("%d\\n",a[k]=(4*a[k]-1)\/5+1);...

猴子分桃问题,R语言编程
显然,最后一个猴子最少要分6个桃子 那么第四只就有6*4+1 y<-c(0,0,0,0,6)for(i in 5:2){ y[i-1]=y[i]*5+1 } > y [1] 3906 781 156 31 6

猴子分桃问题,用Java代码实现
设这一堆桃子至少有x个,先借给它们4个,5个猴子分别拿 了 a、b、c、d 、e个桃子(其中包括吃掉的一个),则可得:a=1\/5*(x+4)b=1\/5*4\/5*(x+4)=4\/5^2*(x+4)...e= 4^4\/5^5*(x+4)e应为整数,而4的4次方不能被5的5次方整除,只有(x+4)应是5的5次方的倍数,所以 ...

一群小猴分桃,如果每只小猴分5个桃,则多余25个桃;如果每只小猴分8个...
假设有X只猴子5X+25=8(X-1)X=11有11只猴子所以有80个桃。解:设有a只猴子,则有(3x+59)个桃子,根据题意得0"∵z为正整数,.".z=30或z=31,当z=30时,3z+ 59=149当c=31时,3z+59=152,答:有30只猴子,149个桃子或有31只猴子,152个桃子.故答案为:有30只猴子,149个桃子或有31...

高智商问题,希望有答案过程。
*4\/5-1]*4\/5,第三个猴子吃了一个又拿走一堆后剩下的桃子个数可以表示为{[(X-1)*4\/5-1]*4\/5-1}*4\/5,以此类推,最后可得到这样的式子(1024X-8404)\/3125,再设第五个猴子拿走的一堆桃子个数为Y,那么可列方程(1024X-8404)\/3125=4Y,其中X、Y都为正整数,哪位大虾来解方程吧 ...

五猴分桃(求通俗解法)
解法:设最后有桃子A个。5\/4A+1=B(B是第4个猴子留下的个数)1.25B+1=C(C是第3个猴子留下的个数)1.25C+1=D(D是第2个猴子留下的个数)1.25D+1=E(E是第1个猴子留下的个数)1.25E+1=F(F是最开始的个数)(ABCDEF都是整数)代入消元得方程:[(3125A+1845)\/256]+1=F...

一群小猴分桃子,第一只猴子拿走其中的一半又半个,第二只小猴又拿走余...
[(0.5÷12+0.5)÷12+0.5]÷12,=[(1+0.5)÷12+0.5]÷12,=3.5÷12,=7(个);答:小猴一共分掉了7个桃子.故选:B.

相似回答