一个有趣的题目的分析与求解李进20101123一个朋友问起我一道.DOCVIP

一个有趣的题目的分析与求解李进20101123一个朋友问起我一道.DOC

  1. 1、本文档共3页,可阅读全部内容。
  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文档。上传文档
查看更多
一个有趣的题目的分析与求解 李进 2010.11.23 一个朋友问起我一道算术题,求解。题目大意是: 五个人在一岛上,有大量椰子,还有一只猴子。晚上,每个人依次将椰子等分成5份,总是余一个,将多的一个椰子给猴子,将五份中的一份藏起来,留下4份。第二天早上一起分椰子时,等分成5份,还是余一个,将多的一个椰子又给了猴子,问:最少有多少椰子? 这题的求解过程比较繁琐,适合小学奥数。 为了简化分析过程,将此问题逆着想,设最后一次每人分到m个,每一步分配前的椰子数作为考察对象,记为Ai,i=6,5,4,3,2,1,椰子总数为Total。 step6 A6=5*m+1 step5 A5=(5*m+1)*5/4+1=5^2/4*m+9/4 step4 A4=(5^2*m+9/4)*5/4+1=5^3/4^2*m+5*9/4^2+1 step3 A3=(5^3/4^2*m+5*9/4^2+1) *5/4+1=5^4/4^3*m+5^2*9/4^3+9/4 step2 A2=(5^4/4^3*m+5^2*9/4^3+9/4) *5/4+1=5^5/4^4*m+5^3*9/4^4+5*9/4^2+1 step1 A1=(5^5/4^4*m+5^3*9/4^4+5*9/4^2+1) *5/4+1 =5^6/4^5*m+5^4*9/4^5+5^2*9/4^3+9/4 =(15625*m+11529)/1024 =Total 显然,A1为正整数。m与分母1024必有关系。 又知 15625*(-1)+11529=-4096=-4*1024 故 m=1024*k-1 其中k=1,2,3...... 当k=1时,m=1023,Total=15621为最小解。 可以求得椰子总数的表达式为 Total=(15625*(1024*k-1)+11529)/1024 其中k=1,2,3...... 其实,这类繁琐的求解过程,使用编程求解,就要方便得多。下面用MATLAB来编程求解该问题。MATLAB代码如下 N=1e5; %研究范围 count=0; %计数 for i=1:N T=i; %总数 for j=1:5 T=(T-1.0)*.8; %分配五次 end if (mod((T-1)/5,1)==0) last=(T-1)/5 %最后一次分配 count=count+1; %计数 Total=i end end count 在MATLAB中键入以上代码,回车后,输出为: last = 1023 Total = 15621 last = 2047 Total = 31246 last = 3071 Total = 46871 last = 4095 Total = 62496 last = 5119 Total = 78121 last = 6143 Total = 93746 count = 6 在1到100000中,有六个数是符合要求的,其中最小的数为15621,对应最后一次分配每人1023个。与上面的结果是一致的。编程求解,采用逆向思考,求解效率会高很多。由于只是纯数字运算,计算的时间代价很小。此处逆向思考的代码可以由给出的代码改动分配函数即可,此处略。 以上,算是完美解答了开头的问题。借助计算机,可以大大简化很多问题的解决。MATLAB也是一个强大的数学工具。 将以上问题抽象成数学符号,依然使用逆序,表示第i次分配时的椰子总数,n表示分配次数。分配规则不变,转变为分配n次,求最小的。即: 已知求n=6时,的最小值。给定n时,求min{m}和min{}。 解:推导的表达式: 为了保证为整数,m+1必须能整除,即得 m+1= m= = 为了得到最小的,必须有最小的m,故 当k=1时, min{m}=-1 () min{}= 当n=6时,可以方便的求得 min{m}=1023 min{}=15621

文档评论(0)

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

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

1亿VIP精品文档

相关文档