猴子分桃子的数学问题

合集下载

关于猴子分桃的算法讲解

关于猴子分桃的算法讲解

关于猴子分桃的算法讲解猴子分桃递归算法分析。

/*X个桃子有5只猴子第一只猴子把x个桃子分了5分还多出一个他把多了那个扔进大海拿走了一份第二只猴子也是如此等到第五只猴子海滩至少能分到1个桃子。

问海滩上原来x是多少个桃子。

非递归算法描述:数学抽象:假设海滩上现在有x个桃子,那么x向下再分一次,也就是n-1只猴子有桃可分的条件必须满足(x-1)是5的倍数。

下一只猴子再分桃,就是x的5分之4. N-1只猴子再分桃的条件就必须满足(x-1)*4/5 依次类推算法设计:一个数x去判断x-1是否能被5整除。

如果可以,则把自己的五分之四拿出来作为下一次分桃的基数,再进行下一轮判断。

总共判断5轮,每一轮满足条件记为真,不满足记为假。

只要5轮都为真则找到x 否则 x继续++ 。

实现下一次5轮判断。

*/namespace递归法_猴子分桃子{class Program{static int fen()//返回海滩上原来最少多少桃子{int m;bool check =false; //用于判断是否执行了五次,亦可用j==5作为判 //断条件int i =0;while (true){i++;m = i;for (int j =0; j <5; j++){if ((m -1) %5!=0)//判断m-1是否被 //整除,亦可用(m-1)%5!=0代替{check =false;break;}else{m = (m -1) *4/5;check =true;}}if (check ==true){return i;}}}//递归算法/*递归算法数学抽象,与非递归刚好相反,递归是倒退,从最后一只猴子向上推理。

假设当前猴子有x个桃子,那么它对于下一轮的猴子来说,x-1要能分5份,而对上一轮的猴子还说,它是上一轮的5分之一。

算法设计:一个变量记录当前是第几只猴子。

一个变量记录当前猴子面前有原来桃子的总数。

如果当前就剩1只猴子则返回所有的桃子总数,否则判断当前的桃子-1 时候够下一轮猴子平分5分,而且对于上一轮的猴子我是不是上面的4/5 求上一轮 x*5%4==0 如果是则上一轮的桃子是自己的5倍多1个而且都在总数-- 否则不满足条件则当前猴子总数不变,桃子总数++。

数学故事(三四年级适用)

数学故事(三四年级适用)

数学故事(三四年级适用)故事一:猴子分桃在美丽的花果山上,住着一群猴子。

一天,猴王想给一群小猴子分桃子。

猴王问小猴子:“我给8个桃子,平均分给4只小猴子,可以吗?”小猴子摇头,觉得分得太少了,大声喊道:“不行!不行!”猴王听了,只好提高标准:“好吧,我给80个桃子,平均分给40只小猴子,怎么样?”小猴子贪婪地说:“大王,请您再多给点吧!”猴王听了,就更慷慨了:“我给你们800个桃子,平均分给400只小猴子,这下总该满意了吧!”小猴子笑了,猴王也笑了。

那么,谁最聪明呢?为什么?(相关课题:商不变性质)故事二:王爷分饼在古代,一位王爷去山上看他的儿子练武。

兄弟几个见到父王来了,都围了上来。

王爷说:“孩子们,父王今天带来了你们最喜欢吃的大饼。

”说着,王爷取出一个大饼,平均分成两份,给了老大一块。

老二很贪心,说:“父王,我想要两块饼。

”于是,王爷把第二块饼平均分成四份,给了老二两块。

老三更贪心,说:“父王,给我三块饼。

”王爷又把第三块饼平均分成六份,给了他三块。

大哥觉得老四最小,应该给他六块,于是说:“父王,老四最小,应该给他六块。

”XXX听了非常高兴,觉得父王给他最多。

那么,你觉得谁得到的最多呢?(相关课题:分数的基本性质)故事三:XXX的生死在古代,有一位糊涂的县官,听信他的师爷的谗言,抓了无辜的XXX。

在审问时,他对XXX说:“明天给你最后一次机会,到时我这里有两枚签,一枚签上写着‘死’字,另一枚签上写着‘生’字,你抽到哪一枚签,就判你什么。

”如果让XXX抽签,可能会怎样呢?可是,想害死XXX的师爷在两个签上都写了一个“死”字。

幸亏XXX的一位朋友把这个消息告诉了他。

第二天,县官在开堂时,让XXX抽签。

XXX抽了一枚签,连忙吞进肚子里。

县官只好打开另一枚签,发现上面写着“死”字,以为XXX抽到的是“生”字签,就只好放了XXX。

(相关课题:可能性)故事四:小猪算算术XXX在算术课上研究加法和减法。

老师问小猪:“如果你有3个苹果,你朋友给你2个苹果,你一共有几个苹果?”小猪算了一下,说:“我有5个苹果。

敬献给李政道博士——五猴分桃类型题简易通解公式上传.doc2

敬献给李政道博士——五猴分桃类型题简易通解公式上传.doc2

敬献给若贝尔奖获得者李政道博士——五猴分桃类型题简易通解公式(完善版)序:“五猴分桃问题”的前身是国外著名的“水手分椰子问题”,剧说,最早是由伟大物理学家狄拉克于1926年提出来的, 随后, 在经过美国数学科普大师马丁* 加德纳的介绍、推广后,该题得到了更为广泛的流传。

1979年,“诺贝尔奖”获得者李政道博士, 序:“五猴分桃问题”的前身是国外著名的“水手分椰子问题”,剧说, 在“中国科技大学少班”讲学时,特意提到此题。

此后, 研究该题的简易计算方法,迅速风靡国内曾对“水手分椰子”的广泛流传起过重要作用的, 著名现代数理逻辑学家怀德海, 对此题给出过一个答案为(-4)巧妙的特解。

在后来者的不断努力下,一些比较简便的方法也逐步出现。

但严格的来说:目前所取得的成果,基本上还是局限于“五猴分桃”这一个具体题目上,离全面而又简捷地求解所有这种类型的题目,还存在着较大的距离。

1979年,本人有幸在月刊《中国青年》看到了“五猴分桃”一题,并用不定方程求得其解。

随后演算推导出能解决所有这种类题型目的简易通解公式:y=a n -db/c 。

但直到前段时期才惊呀发现: 寻找“五猴分桃”类型题的简易计算方法,竟是一个国内、外已研讨了数十年的热门话题,而且至今仍未找到较好解决办法。

于是本人通过继续对该问题的分析研究,进一步完善了该简易通解公式的求解体系,现发表与大家共同分享:一,五猴分桃类型题简易通解公式及特殊形式:1.五猴分桃问题的简易通解公式 y=a(a/m)n-1-db/c其中:y ── 被分的桃子的总个数n ── 总共分的次数(可为任意数)a ── 每次分的份数, (可为任意数)b ── 每次分a 份后的余数.c ──每次分a份后拿走的份数,d ──每次分a份后拿走c份后,剩下再分的份数.m —— (a/d)的最大公约数注:(1)在上试公式中,按照这种类型题题意的要求;y、a、b、c、d、n、m都为正整数,(2)当b/c不为正整数时,题目本身无解;若b/c为正整数时,则题目必定有解(后面会有论述)。

猴王分桃数学故事

猴王分桃数学故事

猴王分桃数学故事
在古老的传说中,有一位叫作猴王的勇士,他的能力超越了其他的猴子。

一天,猴王在森林里发现了一大片桃子,数量令他非常惊讶。

当他品尝桃子时,他意识到他可以分享这些桃子给他的猴子朋友。

于是,他就开始仔细数桃子,发现有千个桃子。

猴王意识到,当他分桃子的时候,他要尽可能让每一只猴子都能得到一份公平的桃子。

于是,他就想出了一个数学方案:他将桃子分成十份,每一份有一百个桃子,这样每只猴子都能得到一百个桃子。

王用一个精巧的办法来分配桃子,他将桃子放在地上,排成一行,每一行有十个桃子。

然后,他把这十个桃子放在一堆桃子里,如此往复,直到最后一堆桃子也放满了。

当猴王把桃子分配完后,他站在群山之巅,向所有的猴子发出召唤,让猴子们都来取自己的桃子。

他把一百个桃子分给第一只猴子,第二只猴子得到了第二堆桃子,依此类推,直到最后一只猴子也有了一百个桃子。

猴王的那一幕引起了众多猴子的惊叹,他们很快看到猴王的智慧,猴子们都惊叹于他的智慧和数学方案,说他的数学方案比他们自己想象的更完美。

一起观看猴王分桃的场景,不仅给了猴子们彼此分享的机会,而且也激发了更多程序设计思想,让猴子们体会到数学是一种非常强大的力量。

在今天,猴王分桃的故事仍然是一个非常受欢迎的故事,正如每
条数学知识是一种基础的数学方案,它可以帮助我们解决复杂的问题,也可以为我们提供一些有用的洞察力。

所以,我们要以猴王为榜样,付出努力,学习数学,锻炼我们的智慧,把握机会,挑战各种困难,让自己在数学上成为一个真正的猴王。

五个猴子吃桃子的奥数题

五个猴子吃桃子的奥数题

五个猴子吃桃子的奥数题五个猴子在森林里发现了一堆桃子,他们决定公平地分食这些可口的水果。

猴子们按照一定规则依次拿起桃子,而且每次只能拿走一定数量的桃子。

我们来看看这个奥数题的具体情况:第一个猴子拿走了一半的桃子,然后再多拿一个;第二个猴子拿走了剩余桃子的一半,然后再多拿一个;第三个猴子又拿走了剩下桃子的一半,并多拿一个;第四个猴子以同样的方式取走剩下的一半和一个桃子;最后一个猴子以相同的方式操作了一次。

我们的任务是找出最初这堆桃子的最少数量。

思路分析:解答这道奥数题,我们需要进行逆向推导。

从第五个猴子的操作开始,每次逆向求出上一个猴子拿走桃子的情况,最终得到第一个猴子所拿走的桃子数量。

解题过程如下:第五个猴子拿走了一半的桃子,并多拿了一个,即剩余桃子的数量为:X = (X / 2 - 1)* 2,其中X为剩余桃子的数量。

同理,第四个猴子取走剩下的桃子的一半,并多拿了一个,即剩余桃子的数量为:X = (X / 2 - 1)* 2,其中X为剩余桃子的数量。

依此类推,我们得到递推公式:X = (X / 2 - 1)* 2,其中X为剩余桃子的数量。

我们通过迭代计算求解这个递推公式,直到得到第一个猴子拿走的桃子数量。

可以使用编程语言来实现。

具体代码如下:```int main(){int x = 2;for (int i = 5; i > 0; i--){x = (x / 2 - 1) * 2;}printf("桃子的最少数量为:%d\n", x);return 0;}```计算结果为:桃子的最少数量为:3121。

结论:根据以上的计算,我们得到了这个奥数题的解答。

最初这堆桃子的最少数量为3121个。

通过这道奥数题,我们锻炼了逆向思维的能力,以及运用数学公式和编程进行问题求解的方法。

同时,这道题也展示了推理和逻辑推导在解决复杂问题中的重要性。

第15讲 盈亏问题(趣味)

第15讲 盈亏问题(趣味)

第15讲盈亏问题(趣味)猴王分桃1、猴王分桃子,如果每只猴子分5个,则剩下7个桃子;如果每只猴子分6个,则差5个桃子,那么共有多少只猴子?多少个桃子?答案:共有12只猴子,67个桃子。

提示:此题属于一盈一亏问题。

剩下7个桃子,是盈,差5个桃子,是亏。

找到两种情况下每只猴子分桃子个数的差,即1个,以及每多分1个所分桃子总个数的差(盈和亏的和),用所分桃子总个数的差除以每只猴子分桃子个数的差就能得到结果。

解答:6-5=1(个)……每只猴子分桃子个数的差;7+5=12(个)……所分桃子总个数的差(盈和亏的和);12÷1=12(只)……猴子的只数;12×5+7=67(个)……桃子的个数。

分棋子2、将棋子分堆,如果每堆分6枚,则还少13枚;如果每堆分4枚,则少5枚,那么一共分了几堆?总共有多少枚棋子?答案:一共分了4堆,总共有11枚棋子。

提示:此题属于两不足(双亏)问题。

还少13枚,是大亏,少5枚,是小亏;找到两种情况下每堆分棋子个数的差,即2枚,以及每多分2枚共要多分棋子的个数(大亏与小亏的差),用共要多分棋子的个数除以每堆分棋子个数的差,就能得到结果。

解答:6-4=2(枚)……每堆分棋子个数的差;13-5=8(枚)……共要多分棋子的个数;8÷2=4(堆)……一共分的堆数;4×6-13=11(枚)……棋子的总枚数。

粉笔分堆3、有若干根白粉笔和彩粉笔,如果按每1根白粉笔2根彩粉笔分堆,那么,彩粉笔分完后还剩5根白粉笔;如果按每3根白粉笔5根彩粉笔分堆,那么,白粉笔分完后还剩5根彩粉笔,那么白粉笔和彩粉笔各有多少根?答案:白粉笔有45根,彩粉笔有80根。

提示:设想再有10根彩粉笔与剩下的5根白粉笔合在一起,每3堆并成一个大堆,则每堆有3根白粉笔,6根彩粉笔,假设的10根彩粉笔,就是亏,还剩5根彩粉笔,就是盈。

与后一堆比较:每堆白粉笔都是3根,找到两种情况下每堆彩粉笔的差,即1根,以及彩粉笔总数的差(盈和亏的和);用彩粉笔总数的差除以每堆彩粉笔的差,就能得到结果。

猴子分桃问题

猴子分桃问题

猴子分桃问题★实验任务动物园里的n只猴子编号为1,2,…,n,依次排成一队等待饲养员按规则分桃。

动物园的分桃规则是每只猴子可分得m个桃子,但必须排队领取。

饲养员循环地每次取出1 个,2 个,…,k个桃放入筐中,由排在队首的猴子领取。

取到筐中的桃子数为k 后,又重新从1开始。

当筐中桃子数加上队首猴子已取得的桃子数不超过m 时,队首的猴子可以全部取出筐中桃子。

取得桃子总数不足m个的猴子,继续到队尾排队等候。

当筐中桃子数加上队首猴子已取得的桃子数超过m时,队首的猴子只能取满m个,然后离开队列,筐中剩余的桃子由下一只猴子取用。

上述分桃过程一直进行到每只猴子都分到m 个桃子。

对于给定的n,k和m,模拟上述猴子分桃过程。

★数据输入第1 行中有3 个正整数n,k 和m,分别表示有n 只猴子,每次最多取k个桃到筐中,每只猴子最终都分到m个桃子。

★数据输出将分桃过程中每只猴子离开队列的次序依次输出输入示例输出示例5 3 401 3 52 4PS:有一种情况上面的问题没有描述,就是当筐中桃子数加上队首猴子已取得的桃子数正好等于m时,按照给的例子应该是管理员要往框中放k个桃子。

这是一个明显的队列问题,所以用queue写了一个,看对大家有帮助不,遗憾的是回收内存时老是出错,于是就没有回收,会造成内存泄露,不过对这个问题而言影响不大。

有什么办法可以解决可以告诉我,暂时不想研究了。

#include <iostream>#include <queue>using namespace std;class monkey{public:int id;int peach;monkey(int imky){id=imky;peach=0;}monkey(const monkey &mkycopy) //复制构造函数{id=mkycopy.id;peach=mkycopy.peach;}};int main(){int n,m,k;cout<<"monkey number:n=";cin>>n;cout<<"k=";cin>>k;cout<<"m=";cin>>m;int ik=1; //放入框中的桃子数,初始为1bool mkypop=false; //有猴子出列且框中还有剩余桃子int peachsy=0; //猴子出列时框中剩余的桃子数queue<monkey>mky; //n个猴子初始化并且入队列for(int i=1;i<=n;++i){monkey *mkynew=new monkey(i);mky.push(*mkynew);}while(ik){monkey mkytemp=mky.front();if(mkypop==false){mkytemp.peach+=ik;ik++;if(ik==k+1)ik=1;}elsemkytemp.peach+=peachsy;if(mkytemp.peach<m) //桃子个数不足m个,排到队尾{mkypop=false;mky.pop();mky.push(mkytemp);}else //桃子大于等于m个,出列{cout<<mky.front().id;peachsy=mkytemp.peach-m;if(peachsy!=0)mkypop=true;mkytemp.peach=m;mky.pop();// delete &mkytemp; //删除申请的内存,会报错。

猴子分桃问题的奥数题

猴子分桃问题的奥数题

猴子分桃问题的奥数题关于猴子分桃问题的奥数题导语:小学奥数真是的大家的心头“恨”呀!孩子不会做,家长很难教。

可偏偏就是这门课,却让很多孩子拉大分数,望而却步。

越不会,越不学,分数自然越来越低。

以下是小编为大家精心整理的关于猴子分桃问题的奥数题,欢迎大家参考!海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。

第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。

第二只猴子来了,它也没有等别的猴子,于是它把剩下的栗子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。

第三只猴子也是如此,等分成四堆后,把剩下的一个扔掉,自己拿走一堆;而最后一只猴子来,也将剩下的栗子等分成了四堆后,扔掉多余的一个,取走一堆。

那么这堆栗子原来至少有多少个?该题目属于猴子分桃问题,该问题的常规解法非常复杂,但诺贝尔奖获得者李政道曾就此类问题给出一个极为简便的解法,解题思路可化为以下三道题目:题目一(简单)海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。

第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。

请问原来的栗子数加上3是不是4的倍数?题目二(中等难度)海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。

第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。

第二只猴子来了,它也没有等别的猴子,于是它把剩下的栗子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。

请问原来的`栗子数加上3是不是16的倍数?题目三(进阶思考,华杯赛真题)海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。

第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数学文化》(公选课)论文考察
学院:材料与化学化工学院
专业:化工与制药
姓名:王林
学号:201202020402
选课班号:RX041-2
日期:2013/11/14
数学文化(关于化归与映像反演法)
题目是这样的:5只猴子一起摘了一堆桃子,因为太累了,他们商量先睡一觉再分。

过了不知多久,来了1只猴子,他见别的猴子没来,便将这一堆桃子平均分成了5份,结果多了一个,就将多的这一个吃了,并拿走其中的一堆。

又过了不知多久,第二只猴子来了,他不知道有一个同伴已经来过了,还以为自己是第一个到呢,于是将地上的桃子堆起来,平均分成5份,发现也多了一个,同样吃了这一个,也拿走了其中的一堆。

第三只、第四只、第五只猴子都是这样……
问题:这五只猴子至少摘了多少个桃子?第五只猴子走后还剩多少个桃子?
题目起源:此题据说是有物理学家狄拉克提出,许多人尝试着去做过,包括狄拉克本人在内都没有找到很简便的方法。

著名物理学家李政道教授访问中国科技大学时,曾用此题考过中国科技大学少年班的学生,无人能答。

下面就是一个十分有趣的解答。

其中数学文化思想:化归法与映射---反演原则。

题目难点:难在每次分都多了一个桃子。

思路和解法:第一个猴子来时先借给他四个再分,分完之后再还回去,这样第二只猴子来的时候,此问题自由变成第一个猴子来时的分法即照样先借个他四个桃子再分,分完之后再还回去,依此法一直到第五只猴子。

因此,我们可以设这堆桃子至少有x 个,借给他们4个,成为x+4个,并设5只猴子分别拿了a 、b 、c 、d 、e 、个桃子
a=(x+4)/5,
b=4(x+4)/25. C=16(x+4)/125
d=64(x+4)/625e=256(x+4)整数个,所以e=256(x+4)/3125中x+4=3125才能使e 为整数。

方可解得x=3121。

所以最终答案为这堆桃子至少3121个,最后还剩1021个桃子。

方法总结:先借给他们四个桃子再分。

其中有趣的是:桃子尽管多了4个,但每个猴子分得的桃子并不会增多也不会减少。

这样,每次都刚好均分成5堆,这样就容易算了。

总结:在经过计算可得:
a b c d e 625 500 400 320 256 125 100 80 64
25 20 24
5 4
所谓化归就是将一个未知问题通过一种关系转化为已经解决了的问题。

所谓映射反演原则则可用一个例子来加以说明:比如说,一个人对着镜子剃胡须,镜子里照出他脸颊上胡须的映像,从胡子到映像的关系就叫映射。

所以映射就是联系着映像与原像的一种对应关系。

然而,他用剃刀修剪胡子时,作为原象的胡子和剃刀两者的关系可以叫做原像关系,这种原像关系在镜子里表现为映像关系。

他从镜子里看到这种映像关系后便能调整提到的映像与胡子映像的关系,于是他也就真正的修剪了胡子。

这里显然用到了反演原则,因为他已经根据镜子里的映像能对应的反演为原像的这一原理,是剃刀准确地修剪了真实的胡子(原像)。

相关文档
最新文档