社区
数据结构与算法
帖子详情
猴子分桃
dengwei1116
2002-01-12 10:28:03
今天看到一道题,如下:
5只猴子分一堆桃.
第一只先吃了一个,然后恰好均分成5份,它拿走自己的一份;
第二只在剩余桃子里再先吃了一个,也恰好5等份,它也取走自己的一份;
其后,第三,第四只猴子也如先前两只一样取桃;
到第五只,它也先吃了一只,最后剩下的桃子也刚能5等份;
求:这堆桃的最小个数.
我认为这是一个求递归的初始条件的,然而具体算,发觉这个最小个数很大.
...全文
631
15
打赏
收藏
猴子分桃
今天看到一道题,如下: 5只猴子分一堆桃. 第一只先吃了一个,然后恰好均分成5份,它拿走自己的一份; 第二只在剩余桃子里再先吃了一个,也恰好5等份,它也取走自己的一份; 其后,第三,第四只猴子也如先前两只一样取桃; 到第五只,它也先吃了一只,最后剩下的桃子也刚能5等份; 求:这堆桃的最小个数. 我认为这是一个求递归的初始条件的,然而具体算,发觉这个最小个数很大.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Bill1212
2002-01-25
打赏
举报
回复
3121没错!
int a=0;
int peach(int n)
{
if(n==0)
{
a+=5;
return a;
}
int m;
while(1)
{
m=peach(n-1);
if(n==1)
return m+1;
int t1=m%4;
if(t1!=0)
continue;
int t2=(m/4)*5+1;
return t2;
}
}
int main(int argc, char* argv[])
{
printf("%d\n", peach(5));
return 0;
}
sizhi
2002-01-25
打赏
举报
回复
看来大方点是有好处的,这一页面最珍贵的就是 CaoHua(曹华) 的思想了,我就怕那些猴子借桃子不还,所以始终不敢借出去。哎......
sizhi
2002-01-25
打赏
举报
回复
3121
3120 +1 -> 2495 + 1 ->1995 +1 -> 1595 + 1 -> 1275 + 1;
mis98ZB
2002-01-15
打赏
举报
回复
5^5-4
taolei
2002-01-15
打赏
举报
回复
-4是个很有意思的数,按照分桃子的过程:
吃了一个后是-5,刚好可以5等分,每一份-1,拿走一个-1之后,还剩下-4
这样,每个猴子分完都还剩-4。
问题的答案可以从-4开始,那么为正数的最小答案就是5^5-4=3121
好好学习天天向上1203
2002-01-14
打赏
举报
回复
我觉得应该是3121,我原来的答案,15621错了,我算成6只猴子了。
我不是用算法,我是用算术算的。
设x个桃子,因为第一只猴子吃了一个,正好可以分成5堆,所以,(x-1)mod5=0,那么,
(x+4)mod5=0,让我们做点好事,借给猴子们4个桃子,反正最后剩一大堆,我们可以连本带利收回。我们借给猴子4个桃子,那么正好可以分成5堆,第一个猴子就拿了其中一堆。但是,它并没有多得桃子,因为它原来就先吃了一只。就是(x+4)*(1/5)=(x-1)*(1/5)+1,
因为它没有多得,所以剩下的桃子比原来剩下的多4个(我们借给它们的4个桃子)。那么剩下的桃子同理也恰好可以分成5堆,第二只猴子又拿走了一堆,同理,第三,第四和第五。最后,剩下的桃子是(x+4)*(4/5)*(4/5)*(4/5)*(4/5)*(4/5),这应该是个整数,所以,(x+4)一定要能被5*5*5*5*5=3125整除,所以x+4最小是3125,此时,x为3121。
mathe
2002-01-13
打赏
举报
回复
这是数学题
kangxiang0923
2002-01-13
打赏
举报
回复
15621对吗?
我算的是15596
1: 15596-1=15595
15594*(4/5)=12476
2: 12476-1=12475
12475*(4/5)=9976
3: 9976-1=9975
9975*(4/5)=7976
4: 7976-1=7975
7975*(4/5)=6376
5: 6376-1=6375
6375*(4/5)可整除。
我是新手,所以程序算法肯定不好,有可能有错。见笑:
#include<iostream.h>
static n;
int i=6;
int get(int);
int shumu()
{
while(1)
{
n=1;
get(i);
if(n==7)
return i;
else;
i++;
}
}
int get(int i)
{
int j;
j=(i-1)/5;
j=j*4-1;
n++;
int k=j%5;
if(k==0)
if(n!=6)
get(j);
else;
return 0;
}
main()
{
int x;
x=shumu();
cout<<x;
return 1;
}
好好学习天天向上1203
2002-01-13
打赏
举报
回复
15621
bbb20bb
2002-01-13
打赏
举报
回复
你终于知道这个东东不好算
waterinpool
2002-01-13
打赏
举报
回复
http://www.csdn.net/expert/Topic/222/222324.shtm
神鹰
2002-01-13
打赏
举报
回复
一:3906-1=3905/5=781
二:781-1=780/5=156
三:156-1=155/5=31
四:31-1=30/5=6
五:6-1=5/5=1
神鹰
2002-01-13
打赏
举报
回复
3906只桃子
duan_yanfeng
2002-01-13
打赏
举报
回复
你这样得到的结果一定是整数,所以直接初始成每猴一个,再算就行了
dengwei1116
2002-01-13
打赏
举报
回复
能不能用程序实现?
我是这样想的:
初始化最后每只猴子手上一个桃子;
逆向求第五次,第四次,第三次,第二次,第一次分前的桃子个数;
如果在到求出第一次个数(当然是自然数)之前任何一次得出的结果非整数,则
又从第五次开始,第五次猴子手上的桃子个数自加1.
猴子
分桃
(经典算法)
《
猴子
分桃
:揭示经典算法的魅力》 在编程竞赛领域,"
猴子
分桃
"是一个脍炙人口的问题,常被用于考察参赛者对于算法的理解和应用能力。这个问题源于ACM(国际大学生程序设计竞赛),旨在训练学生的逻辑思维和问题...
猴子
分桃
代码
甲、乙、丙3个
猴子
带着21个篮子去摘桃子。回来以后,发现有7个篮子装满了桃子,还有7个篮子装了半篮桃子,另外7个篮子是空的。假设7个满篮中桃子的重量都相同为a千克,7个半篮中桃子的重量也相同为b千克。在不将桃子...
猴子
分桃
问题程序
有5只
猴子
共有一堆桃,约好一起分享。第一只
猴子
来到后把桃平均分成5堆后还剩下一个,就吃了这一个并搬走了5堆中的一堆。第二
猴子
来到后不知道前一只
猴子
已经拿走了,它把4堆桃合在一起又平均分成5堆后,也剩下一个...
python 实现
猴子
分桃
# 题目:海滩上有一堆桃子,五只
猴子
来分。第一只
猴子
把这堆桃子平均分为五份,多了一个,这只
猴子
把多的一个扔入海中,拿走了一份。第二只
猴子
把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,...
猴子
分桃
问题.html
猴子
分桃
问题.html
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章