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