C语言经典100例问题,猴子分桃的问题。高分求助! 50

语言经典100例中猴子分桃的问题,谁有这个程序,网上搜了好几个最后答案都是4,好像不对。谁有这个程序,谢谢!题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据... 语言经典100例中猴子分桃的问题,谁有这个程序,网上搜了好几个最后答案都是4,好像不对。谁有这个程序,谢谢!
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三,第四,第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?
展开
 我来答
小何才露尖尖角儿
2012-04-10 · TA获得超过362个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:416万
展开全部
int fun(int n,int num)//n为猴子数,num为桃子数
{
if(n==5) //如果猴子数为5调用结束
return 0;
if(num%5==1)//如果桃子数满足条件 桃子数分为5份
num=num/5*4;
else
return 1; //否则 跳出函数
n++; //猴子数+1
return fun(n,num);//若没有跳出函数 则继续调用
}
int main(void)
{
int i=0;
while(1)
{
if(fun(0,i)==0)
{
//i是你想要的值。
break;
}
i++;
}
return 0;
}
答案好像是3121
全晚水星索3d
2012-04-15 · TA获得超过276个赞
知道答主
回答量:105
采纳率:0%
帮助的人:120万
展开全部
递归方法最简单!
思考过程:
1、如果只有1只猴子,显然,6个桃子满足条件;
2、如果有n(n>=2)只猴子,则桃子总数 = 第(n-1)只猴子获得的那一份桃子数量乘以5 加1

#include <stdio.h>

int peaches(int n)
{
if (n == 1) return 6;
else return peaches(n-1) * 5 + 1;
}

int main(void)
{
printf("%d\n", peaches(5)); /* 猴子数量 = 5 */

return 0;
}

答案:3906
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天方之夜谭
2012-04-10 · TA获得超过587个赞
知道小有建树答主
回答量:223
采纳率:100%
帮助的人:225万
展开全部
int main(void){
int n = 1;//最后一只猴子拿走的桃子数目
int i = 5;//猴子的个数
while(i-->0)
n+=n*4+1;
printf("原来有:%d 个桃子.\n",n);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liujj4241
2012-04-10 · TA获得超过4043个赞
知道大有可为答主
回答量:7021
采纳率:58%
帮助的人:974万
展开全部
for i= 0; i<10000; i++
{
if (i % 5 ==1)
if ((i-1)/5 *4) % 5==1)
if ((((i-1)/5 *4)-1)/5 *4) % 5==1)
if ((((((i-1)/5 *4)-1)/5 *4)-1)/5*4) % 5==1)
if ((((((((i-1)/5 *4)-1)/5 *4)-1)/5*4)-1)/5*4) % 5==1)
print ("最少%d个",i);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
145飞雪090
2012-04-10 · TA获得超过621个赞
知道小有建树答主
回答量:282
采纳率:100%
帮助的人:181万
展开全部
5 1*5+1=6
4 6*5+1=31
3 31*5+1=156
2 156*5+1=781
1 781*5+1=3906
#include <stdio.h>
void main()
{ int monkey,x1,x2;
monkey=4;
x2=6;
while(monkey>0)
{ x1=x2*5+1;
x2=x1;
monkey--;
}
printf("the total is %d.\n",x1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乘玲琅T7
2012-04-10
知道答主
回答量:37
采纳率:0%
帮助的人:27.4万
展开全部
#include <stdio.h>
void main()
{
int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{
count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if (j%4==0)
{
count++;
}
else
break;
}
i=m;
if (count==4)
{
printf("%d\n",j);
break;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式