- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五猴分桃问题.doc
1979年,诺贝尔奖获得者李政道教授到中国科技大学讲学,他给少年班的同学出了这样一道算术题:有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有多少只.据说没有一个同学能当场做出答案.怎么解? 我在小学学竞赛的时候曾遇到了这个题,当时百思不得其解。后来上高中后用递推数列解决了此题自以为很有成就感,后在一本书上看到的解法既揭示了问题的本质又异常简单。突然想起这道趣题不敢独享特与大家分享。
如果借4个挑子的话。恰好每次都能平分成5份。就是说每次拿的桃子和扔了的加拿了的是一样多。设开始有x个桃子借了4个后就是(x+4)个桃子。每次就余下前次对应的4/5,借了4个桃子后等第五只猴子来过后应该余下的桃子是个 x+4必须是5的5次方的倍数所以x至少是3121,此时余下的桃子是1024个但借了的4个要还回去,实际余下的是1020个。一道经典难题就轻松解决了,我们学习数学就是去享受思考的过程。
C++ 五猴分桃
5只猴子一起摘了一大堆桃子,
晚上有一只猴子醒来发现其他猴子都睡着了,
就起来吃了一个桃子,
然后将剩余的桃子恰好平均分成5份,
自己拿了其中的一份藏起来,
然后去睡觉.
第二只猴子醒来发现其他猴子都睡着了,
就像第一只猴一样先吃了一个桃子,
然后将其它的桃子又恰好平均分成5份,
自已也拿了其中的一份藏起来,
接着又去睡觉.
第三只,第四只,第五只猴都像第一第二只猴一样做了,
现问:这5只猴至少摘了多少个桃子?3121个
*/
#include iostream.h
void main()
{
long k,houzi=1,i=4,m_find=0;
float n;
while(i50000)
{
n=(float)i*5/4+1;
if(n==(int)n)
{
houzi=1;
while(houzi6)
{
k=(long)n;
n=(float)k*5/4+1;
if(n==(int)n)
houzi++;
else
break;
if(houzi==5)
{
m_find++;
cout第m_find次找到endl;
cout总的桃子有n个endl;
}
}
i++;
}
else
i++;
}
}
5个猴子摘了一堆桃子,约好第二天早上来分。第一只猴子来得早,它将桃子平分成5堆,多出一个,它把多出的一个吃了,把属于自己的一堆拿走了,将剩下的还混成一堆。其他猴子来了也正好按一样的方法处理。编程求出原来有多少个桃子。(用递归函数) (用C++编写)
提问者:? HYPERLINK /?detailaid=7default_tab=2un=huaxue1987 \t _blank huaxue1987?-? HYPERLINK /search/zhidao_help.html \l n5 \t _blank 助理 二级
最佳答案
***********************************************************?************************ 答案: 3121 ***********************?***********************************************************?思路一: (逆)?假设还有最后第6个猴子F,最后剩下给它的果子数为f=last(剩下的可能是f=0).?那么可知,E得到的果子数是:e=4*f(e为整数,因为果子数是整的),由这里可见: f是4的倍数!!!!!!!!!(注意这里,这是程序里f=0;f=f+4的原因!!)?于是 D 分到的果子数是:d=(5*e+1)/4;?同理:c=(5*d+1)/4; b=(5*c+1)/4; a=(5*b+1)/4 ;?思路二: (正)?假设分前的果子数为fisrt,A分到的果子数为a=(first-1)/5+1,这里可见(first-1)%5==0也就是5的倍数!!(因为果子数是整数)?b=(4*(a-1)-1)/5+1,同理,c=(4*(b-1)-1)/5+1,d=(4*(c-1)-1)/5,e=(4*(d-1)-1)/5+1?**********(到最后我们试着比较两个思路的出的程序各有什么优缺点??)**********?****
文档评论(0)