网站大量收购独家精品文档,联系QQ:2885784924

五猴分桃问题.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

changjiali2019 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档