五猴分桃
C语言实现的猴子分桃问题算法解决方案

C语⾔实现的猴⼦分桃问题算法解决⽅案
本⽂实例讲述了C语⾔实现的猴⼦分桃问题算法。
分享给⼤家供⼤家参考,具体如下:
问题:
海滩上有⼀堆桃⼦,五只猴⼦来分。
第⼀只猴⼦把这堆桃⼦凭据分为五份,多了⼀个,这只猴⼦把多的⼀个扔⼊海中,拿⾛了⼀份。
第⼆只猴⼦把剩下的桃⼦⼜平均分成五份,⼜多了⼀个,它同样把多的⼀个扔⼊海中,拿⾛了⼀份,第三、第四、第五只猴⼦都是这样做的,问海滩上原来最少有多少个桃⼦?
程序:
#include<stdio.h>
int divided(int n, int m) //注意该递归函数的定义
{
if(n/5==0 || n%5!=1)return 0;
if(m==1) return 1;
return divided(n-n/5-1, m-1);
}
int main(int argc, char *argv[])
{
int n;
int m = 5;
for(n = 1; ; n++)
if(divided(n,m))
{printf("%d\n", n);
break;
}
}
程序运⾏结果为:3121
希望本⽂所述对⼤家C语⾔程序设计有所帮助。
悟空分桃教案

悟空分桃教案悟空分桃教案悟空分桃教案是一篇经典的中国民间故事,也是一则寓言故事。
这个故事以猴子悟空为主角,通过他分桃的经历,传递了关于分享和公平的价值观。
本文将从不同角度对这个故事进行探讨,分析其中蕴含的深层含义。
首先,悟空分桃教案可以被视为一则关于分享的寓言故事。
故事中,悟空在桃树下发现了一堆美味的桃子,他决定将桃子平均分给自己和其他三个伙伴。
然而,悟空却发现桃子总数无法被四整除,于是他把多余的桃子吃掉,以保持公平。
这个故事告诉我们,分享并不仅仅是把物质分给别人,更重要的是要保持公平和平等。
悟空的行为展示了他对公平的追求,他不愿意让自己多得一份,而是选择了均分。
这种分享的精神在现实生活中同样适用,我们应该在与他人分享时,考虑到公平和平等的原则。
其次,悟空分桃教案还可以被视为一则关于互助的寓言故事。
在故事中,悟空在遇到难题时,寻求伙伴的帮助。
他把自己遇到的问题告诉了其他三个伙伴,并征求他们的意见。
最终,他们共同商量出了一个解决方案。
这个故事告诉我们,当我们面临困难时,应该主动向他人寻求帮助,共同解决问题。
悟空的行为展示了他对团队合作和互助的重视,他没有独自承担困难,而是选择与他人合作,共同解决问题。
这种互助的精神在现实生活中同样重要,我们应该学会与他人合作,相互支持,共同成长。
此外,悟空分桃教案还可以被视为一则关于智慧和解决问题的寓言故事。
在故事中,悟空面临的问题是如何将桃子平均分给四个人。
他尝试了各种方法,最终找到了一种解决方案。
这个故事告诉我们,解决问题需要智慧和创造力。
悟空通过思考和尝试,找到了一个既公平又合理的解决方案。
这种智慧和创造力在现实生活中同样重要,我们应该学会思考和尝试,寻找解决问题的方法。
最后,悟空分桃教案还可以被视为一则关于自我反省和成长的寓言故事。
在故事中,悟空意识到自己的错误,并主动承担起责任。
他意识到自己吃掉了多余的桃子,违背了原本的初衷,于是他决定向伙伴们坦白,并主动承担后果。
敬献给李政道博士——五猴分桃类型题简易通解公式上传.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为正整数时,则题目必定有解(后面会有论述)。
算法设计

2015-3-2
程序:
#include<stdio.h> void main() { double a=20.00; int b,i; for(i=9;i>0;i--) { a=a/2; if (a<=5.00) { break; } } printf("小虫长到5厘米时是第%d天\n",i); } 2015-3-2
2015-3-2
程序:
b=n; n=a; if(i==6) { c++; printf("情况%d----一开始桃子的总数为:%d\n",c,n); printf(" 最后剩下桃子数:%d\n",b); } } return 0; }
2015-3-2
运行截图
运行结果:
2015-3-2
致谢
:桃子总数3121,最后一个后自拿 走后剩下1020个
逆推法
所谓逆推:
逆推法又叫分析法, 是从分析每一个结论 开始,步步倒推,直 至说明题目给出的条 件恰好符合要求为止 。
2015-3-2
一条小虫,身长每天增大一倍,10天长到 20厘米.问它从开始长到5厘米时是第几天? 分析:如果知道小虫刚开始的身长就可以 很容易得到答案,但是由于题目没告诉, 此时我们就要从已知条件入手,题目告诉 了最终结果,所以我们考虑从结果入手, 这就是倒推法了。
算法设计与分析
班级:20140718 学号:2014072006 姓名:刘小芳
递推法
递推法
顺推法关键 :找递推关式
,从初始条件 出发,一步步 地按递推关系 式递推,直至 求出最终结果 。
2015-3-2
幼儿园大班教案《悟空分桃》含反思

幼儿园大班教案《悟空分桃》含反思大班教案《悟空分桃》含反思适用于大班的数学主题教学活动当中,让幼儿培养初步的推理能力和良好的学习习惯,引导幼儿学习5的组成,知道5有4种分合方法,培养幼儿初步的观察、分析、概括能力及思维的灵活性,快来看看幼儿园大班《悟空分桃》含反思教案吧。
活动目标1、引导幼儿学习5的组成,知道5有4种分合方法。
2、培养幼儿初步的推理能力和良好的学习习惯。
3、培养幼儿初步的观察、分析、概括能力及思维的灵活性。
4、发展幼儿逻辑思维能力。
5、幼儿能积极的回答问题,增强幼儿的口头表达能力。
活动准备悟空头饰一个,小猴头饰每人一个,实物桃子5个,桃子卡片、操作盘、数字卡片等操作材料人手一份,羊角球一个,妖怪道具5个活动过程(一)导入活动:悟空归来通过齐天大圣孙悟空的出现,激发幼儿的学习兴趣,在此环节中,通过观察和点数,加强幼儿对数量5的认识,使幼儿能不受物品种类的影响正确点数,促进幼儿对数概念的掌握由具体向抽象转化。
1、师:嗨,你们好!看看谁回来了?(孙悟空)谁能说说本大王有什么高强的本领?幼:孙悟空能上天入地,会七十二般变化,可以用金箍棒打妖怪2、师:我听说在我取经的这段时间,孩儿们也学了不少的本领,下面大王考考你们。
(教师佯装拔猴毛一吹)孩儿们,快看大王变出了什么?你能找出里面谁的数量是5吗?教师引导幼儿逐排寻找,并对回答问题的小朋友进行鼓励。
(二)、自主探索过程:悟空分桃此环节是本次活动的重点部分,幼儿通过动手操作、自主探索、观察比较等方法掌握5的组成,知道5有4种分合方法,初步感知和理解数量之间的关系。
1、承上启下,初探5的组成,引导幼儿把对具体实物的分合转化为抽象的分合式。
师:孩儿们真是棒极了,大王奖励你们好吃的桃子,谁能帮我把桃子摆到桌子上?数一数,大王奖励了几个桃子?请你把这5个桃子放在两个水果盘里,并把得到的结果告诉你的同伴们。
幼:我把5分成了2和3,红盘子里放了2个,绿盘子里放了3个师:这个方法真不错,我要赶紧把它记下来。
五猴分桃

e应为整数,而44不能被55整除,只有(x+4)应是55的倍数,所以 (x+4)=55?k=3125k(k取自然数)
当k=1时,x=3121
k=2时,x=6246
答案是,这
int count; /*num satisfied our condition*/
}_tagTest, p_tagTest;
bool monkey(int iOriginal, int * pRemains);
bool SepPeach(int iTotal, int *remains);
printf(“test-- from:%d , to:%d\npress any key to continue\n“,i,MAXNUM);
getchar();
printf(“starting find...\n“);
for(; i < MAXNUM; i++)
{
if( (ret = SepPeach(i,&tempRmn)) != true)
b=4(x+4)/52
c=42(x+4)/53
d=43(x+4)/54
e=44(x+4)/55
“五猴分桃”这个问题,据说是由大物理学家狄拉克提出的,许多人尝试着做过,包括狄拉克本人在内都没有找到很简便的解法。此题的解法确有多种,张老师的解法真叫绝,他认为,每次分都多一个桃子,实际上可以理解为少4个,先借给它们4个再分。
我们看看他是怎么解的。
设这一堆桃子至少有x个,先借给它们4个,5个猴子分别拿了 a、b、c、d 、e个桃子(其中包括吃掉的一个),则可得: a=(x+4)/5
难忘的"五猴分桃"问题
五猴分桃问题

1979年,诺贝尔奖获得者李政道教授到中国科技大学讲学,他给少年班的同学出了这样一道算术题:有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有多少只.据说没有一个同学能当场做出答案.怎么解?我在小学学竞赛的时候曾遇到了这个题,当时百思不得其解。
后来上高中后用递推数列解决了此题自以为很有成就感,后在一本书上看到的解法既揭示了问题的本质又异常简单。
突然想起这道趣题不敢独享特与大家分享。
如果借4个挑子的话。
恰好每次都能平分成5份。
就是说每次拿的桃子和扔了的加拿了的是一样多。
设开始有x 个桃子借了4个后就是(x+4)个桃子。
每次就余下前次对应的4/5,借了4个桃子后等第五只猴子来过后应该余下的桃子是54()(4)5x 个 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(i<50000){n=(float)i*5/4+1;if(n==(int)n){houzi=1;while(houzi<6){k=(long)n;n=(float)k*5/4+1;if(n==(int)n)houzi++;elsebreak;if(houzi==5){m_find++;cout<<"第"<<m_find<<"次找到"<<endl;cout<<"总的桃子有"<<n<<"个"<<endl;}}i++;}elsei++;}}5个猴子摘了一堆桃子,约好第二天早上来分。
大班教案悟空分桃教案【3篇】

大班教案悟空分桃教案【精选3篇】大班教案悟空分桃教案【精选3篇】一活动目标1.学习4、5的分解、组成,知道4的三种分合方法,5的四种分合方法。
2.初步探究组成的互换规律以及总数和部分数之间的关系,培育幼儿初步的推理力量。
3.能用卡片记录自己的'操作结果,并正确表达。
活动预备1.悟空、唐僧、猪八戒头饰各1个。
2.多媒体教学课件、保龄球、套圈、各种玩具,若干小筐。
3.用卡纸制作的记录卡、数字卡若干。
活动过程一、开头部分:播放《西游记》的主题曲师:小伴侣,你听谁来了?(出示悟空的图片)幼:孙悟空。
师:对,他们师徒四人正在取经的路上,(师徒四人的图片),他们又累又渴,悟空说:“师傅,我去摘些桃子来吃吧。
”悟空一个筋斗不见了,他去摘桃子了。
二、基本部分1.复习3的分解和组成。
师:(播放课件)看,孙悟空摘来了几个桃子,他想分给唐僧和沙僧两个人,可他不会分,这下可把悟空难住了!谁有好办法?谁情愿帮帮它?(活动中,依据幼儿回答,课件出示3的分成式,引导幼儿观看,发觉递增、递减的规律。
)师:小伴侣真是太棒了,惋惜没有猪八戒的桃子,他可不情愿,那我们一起去摘桃子分给他和师傅吧!出示悟空、唐僧和猪八戒的头饰和记录卡,让幼儿来帮悟空分桃子。
利用记录卡讲解4的分合式,引导幼儿观看,发觉递增,递减的规律。
2.自由探究、记录。
师:孩子们,你们太棒了!帮悟空分了桃子,还发觉了数字排列的规律。
悟空可兴奋了,它拔出一根毫毛,一吹……看!给我们变出了这么多好玩的东西!出示课件,介绍玩法,让孩子们自由探究,并把自己玩的结果记在记录卡上。
(1)介绍保龄球玩法。
保龄球:保龄球瓶5个一组摆好。
孩子们站在规定的线后面,用保龄球打球瓶。
记录:打倒了几个?剩下几个?(2)套圈圈:5个圈圈和一个露露瓶。
孩子们站在规定的线后面,用圈套瓶。
记录:套住了几个?剩下几个?(3)分玩具:5个积木和两个小筐。
孩子们把5个积木分到两个小筐里。
记录:1个小筐几个?另一个几个?(4)小猴子捉迷藏:5个画有小猴的瓶盖。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五猴分桃
著名美籍华人科学家李政道在一次回国讲学期间,曾给中国科技大学少年班的同学出了这样一道古时的趣题:
五只猴子采得一堆桃,它们约定次日早起来分。
半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。
第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。
第三只,第四只,第五只猴子都依次如此做了。
问桃子数最少有多少个?
我们试列方程来求解:
设原有桃子x个,第一只猴吃掉1个再拿走余下桃子的五分之一,
解这个多重括号的方程要特别小心。
经过化简、整理,得
256x-3125y=2101.(1)
这里只有一个方程,但有x,y两个变量,用什么方法来解这个方程呢?
回溯《五猴分桃》的源头,最巧妙精采、最古老的方法当首推“辗转相除法”,这是约在距今2200年前古希腊学者欧几里得创立的。
对于五猴分桃所得的方程(1),我们先考虑:
256x+3125y=1.
3125÷256商等于12,余53;256÷53商等于4,余44……故有:
3125=12×256+53, 256=4×53+44,
53=1×44+9, 44=4×9+8,
9=1×8+1,因而得:
1=9-8=9-(44-4×9)=5×9-44
=5×(53-44)- 44= 5×53-6×44
=5×53- 6×(256-4×53)
=29×53-6×256
=29×(3125-12 ×256)-6 ×256
=256×(-354)+3125×29.
这样,方程256x+3125y=1便有一组解:
x=-354,y=29.
接着,用c=2101遍乘256x+3125y=1各项便有:
256(-743754)-3125(-60929)=2101,由此可知方程256x-3125y=2101有一组解:
x=-743754,y=-60929.
因为方程ax+by=c只要有一组整数解
x=x0,y=y0,
则一切整数解可表示成:
x=x0-bt,y=y0-at.
故得x的解为:x=3125t-743754.
故当x为最小正整数时,t=239.
于是满足题意的解为:
x=3125×239-743754=3121.
这就是《五猴分桃》题中的总桃数。
我们也可以用解不定方程的常规方法来解。
把方程(1)改写为
整数即可。
容易看出53与256无公约数,因此y=255时满足要求。
此时求出
x=3121.
当然我们可以看出问题有无穷多解,上面求出的是满足条件的最小正整数解。
科大少年班的一些同学是这样解的:
因为桃子总数及每次剩下的桃子数都是5的倍数多1(或者少4)。
又桃子数量在分的过程中被5除过5次,因此总数应与5n有关(其中n≥5).先检验5n+1:
整数。
因此5n+1不可能。
再检验5n-4(n≥5):
至此已可看出,当n≥5时,数字5n-4都满足要求,其中最小的那个数是
55-4=3121(个).
这种解法思维简明,可见少年班的同学智力的确不同凡响。
上述解法可更简缩为如下的解法:
假若我们借来4个桃子,这样桃子数可连续5次均分成5堆,所以桃子数最少应该是
55-4=3121(个).
关于不定方程欧拉曾提出过如下的问题;
有一个商人,用1770元去买马和牛。
一匹马值31元,一头牛值21元。
求他各买了马和牛多少?有几种可能的答案?
如果设买马和牛的头数分别为x,y,则可得方程
31x+21y=1770.
因为y必须是正整数,所以5x-3必能被21整除。
这时如果从1开始取x去检验,计算量是很大的。
我们令5x-3=21z(z 为整数),代入(1),得
y=84-x-2z,(2)
再令z+3=5u,代入(3)与(2),分别得
x=4×(5u-3)+u=21u-12,(4)
y=84-(21u-12)-2(5u-3)=102-31u.(5)
易见y,z均应为正整数,故102-31u>0且5u-3>0,于是
当u=1时,求出x=9,y=71.
当u=2时,求出x=30,y=40.
当u=3时,求出x=51,y=9.
即总共有三种买马和牛的方法:买牛71头,马9匹;或买牛40头,马30匹;或买牛9头,马51匹。
五猴分桃
著名美籍华人科学家李政道在一次回国讲学期间,曾给中国科技大学少年班的同学出了这样一道古时的趣题:
五只猴子采得一堆桃,它们约定次日早起来分。
半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。
第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。
第三只,第四只,第五只猴子都依次如此做了。
问桃子数最少有多少个?
我们试列方程来求解:
设原有桃子x个,第一只猴吃掉1个再拿走余下桃子的五分之一,
解这个多重括号的方程要特别小心。
经过化简、整理,得
256x-3125y=2101.(1)
这里只有一个方程,但有x,y两个变量,用什么方法来解这个方程呢?
回溯《五猴分桃》的源头,最巧妙精采、最古老的方法当首推“辗转相除法”,这是约在距今2200年前古希腊学者欧几里得创立的。
对于五猴分桃所得的方程(1),我们先考虑:
256x+3125y=1.
3125÷256商等于12,余53;256÷53商等于4,余44……故有:3125=12×256+53, 256=4×53+44,
53=1×44+9, 44=4×9+8,
9=1×8+1,因而得:
1=9-8=9-(44-4×9)=5×9-44
=5×(53-44)- 44= 5×53-6×44
=5×53- 6×(256-4×53)
=29×53-6×256
=29×(3125-12 ×256)-6 ×256
=256×(-354)+3125×29.
这样,方程256x+3125y=1便有一组解:
x=-354,y=29.
接着,用c=2101遍乘256x+3125y=1各项便有:
256(-743754)-3125(-60929)=2101,
由此可知方程256x-3125y=2101有一组解:
x=-743754,y=-60929.
因为方程ax+by=c只要有一组整数解
x=x0,y=y0,
则一切整数解可表示成:
x=x0-bt,y=y0-at.
故得x的解为:x=3125t-743754.
故当x为最小正整数时,t=239.
于是满足题意的解为:
x=3125×239-743754=3121.
这就是《五猴分桃》题中的总桃数。
我们也可以用解不定方程的常规方法来解。
把方程(1)改写为
整数即可。
容易看出53与256无公约数,因此y=255时满足要求。
此时求出
x=3121.
当然我们可以看出问题有无穷多解,上面求出的是满足条件的最小正整数解。
科大少年班的一些同学是这样解的:
因为桃子总数及每次剩下的桃子数都是5的倍数多1(或者少4)。
又桃子数量在分的过程中被5除过5次,因此总数应与5n有关(其中n≥5).先检验5n+1:
整数。
因此5n+1不可能。
再检验5n-4(n≥5):
至此已可看出,当n≥5时,数字5n-4都满足要求,其中最小的那个数是
55-4=3121(个).
这种解法思维简明,可见少年班的同学智力的确不同凡响。
上述解法可更简缩为如下的解法:
假若我们借来4个桃子,这样桃子数可连续5次均分成5堆,所以桃子数最少应该是
55-4=3121(个).
关于不定方程欧拉曾提出过如下的问题;
有一个商人,用1770元去买马和牛。
一匹马值31元,一头牛值21元。
求他各买了马和牛多少?有几种可能的答案?
如果设买马和牛的头数分别为x,y,则可得方程
31x+21y=1770.
因为y必须是正整数,所以5x-3必能被21整除。
这时如果从1开始取x去检验,计算量是很大的。
我们令5x-3=21z(z 为整数),代入(1),得
y=84-x-2z,(2)
再令z+3=5u,代入(3)与(2),分别得
x=4×(5u-3)+u=21u-12,(4)
y=84-(21u-12)-2(5u-3)=102-31u.(5)
易见y,z均应为正整数,故102-31u>0且5u-3>0,于是
当u=1时,求出x=9,y=71.
当u=2时,求出x=30,y=40.
当u=3时,求出x=51,y=9.
即总共有三种买马和牛的方法:买牛71头,马9匹;或买牛40头,马30匹;或买牛9头,马51匹。