C语言编程题,关于猴子分桃问题

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个... 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
有点分不清关系那种感觉,请高手指教一二,应该如何编写这一程序呢?谢谢了!
展开
 我来答
高金山
2008-07-01 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1793万
展开全部
正确的答案是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;
}
}
}
wonder想知道
2008-06-30 · TA获得超过231个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:171万
展开全部
#include <stdio.h>

int MinNum()
{
int i,j,num;
for(i=6;;i+=5)/*对所有能分成5份还余1的整数进行探试*/
{
num=i;
for(j=0;j<5;j++)/*5个猴子重复同一样的分桃过程*/
{
if(num/5==0||num%5!=1) break;/*如果剩余的桃子分不成5份或者分成5份后不会正好多余1个桃子,则说明分桃过程进行不下去了,结束分桃*/
num=num-num/5-1;/*如果分桃过程能进行下去,拿走一份,扔掉1个,下一个猴子继续分桃*/
}
if(j>=5) return i;/*如果上面的循环顺利结束,说明分桃顺利结束,找到了符合条件的最小桃子数,返回*/
}
}

main()
{
printf("最少桃子数为:%d\n",MinNum());
}

/*还有一种逆向求解的方法,探试的次数要少一点*/
#include <stdio.h>

int MinNum()
{
int i,j,num;
for(i=6;;i+=5)
{
num=i;
for(j=4;j>0;j--)
{
if(num%4) break;
num=num+num/4+1;
}
if(j<=0) return num;
}
}

main()
{
printf("最少桃子数为:%d\n",MinNum());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cxsjabc
2008-07-01 · 超过26用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:0
展开全部
这个太简单了;
把握一个想法: 总共分了N次分完的;
用个for循环:
for(int i=1;i<=N;i++)
然后就是每次都分上一次减1的1/5;
设最后一次是j;
则依次可以计算最开始的表达式;
即得。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b546034629
2008-07-02
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
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;}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
关羽大战貂蝉
2008-07-01
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
using namespace std;
int main()
{int x=1,temp;
abc:{temp=x;
for(int i=5;i>0;i--)
{if(temp*5%4!=0){x++;goto abc;}
temp=temp*5/4+1;
}}
cout<<temp<<endl;
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式