文档库 最新最全的文档下载
当前位置:文档库 › 奥数-猴子分桃

奥数-猴子分桃

奥数-猴子分桃
奥数-猴子分桃

猴子分桃问题(18年5月11日)

一列火车从起点站出发后,乘客一直只下车不上车。在经过第1个车站时,有1名乘客下车;在经过第2个车站时,车上乘客总数的1/5都下车了。以后在奇数车站,都有1名乘客下车;在偶数车站,车上乘客总数的1/5下车。在列车经过10个车站后,车上仍然有乘客。请问火车上原来至少有多少名乘客?

答案:3121名。

讲解思路:

这道题是猴子分桃问题变形,

该问题如果列方程求解过程很复杂,

诺奖得主李政道曾给出一个巧妙的解法。

文末思考题就是猴子分桃的原题。

步骤1:

先思考第一个问题,

如果最初的乘客数是n,

n+4是不是5的整数倍?

这个问题虽然很简单,

但正是李政道先生解法的巧妙之处。

经过第1个车站下1人,

说明最初的乘客数n-1是5的整数倍,

而n+4=n-1+5,

因此n+4也是5的整数倍。

步骤2:

再思考第二个问题,

经过2个车站后乘客数是多少?

经过1个车站后是n-1,

经过2个车站后是(n-1)*4/5,

在此李先生做了一个巧妙的变换,

将人数表达成为(n+4)*4/5-4。

变换的目的是为了应用步骤1的结论。

步骤3:

综合上述几个问题,

由于第3、4站相当于重复了前2站,

因此重复步骤1的过程,

经过2站后的乘客数加4也是5的整数倍,

故(n+4)*4/5也是5的整数倍,

即n+4是25的整数倍;

类似的第5、6站相当于重复了3、4站,

说明n+4是125的整数倍;

第7、8站相当于重复了5、6站,

说明n+4是625的整数倍;

第9、10站相当于重复了7、8站,

说明n+4是3125的整数倍。

经过10站后车上还有乘客,

因此n+4最小是3125,

所以火车上最初至少有3121人。

思考题:

山洞里有一堆桃子,这是四只猴子的财产,它们想要平均分配。第一只猴子来了,它左等右等别的猴子都不来,便把桃子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔了,自己拿走了四堆中的一堆。第二只猴子来了,它也没有等别的猴子,于是它把剩下的桃子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。第三只猴子也是如此,等分成四堆后,把剩下的一个扔掉,自己拿走一堆;而最后一只猴子来,也将剩下的桃子等分成了四堆后,扔掉多余的一个,取走一堆。那么这堆桃子原来至少有多少个?

猴子分桃问题(17年7月2日)

海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。第二只猴子来了,它也没有等别的猴子,于是它把剩下的栗子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。第三只猴子也是如此,等分成四堆后,把剩下的一个扔掉,自己拿走一堆;而最后一只猴子来,也将剩下的栗子等分成了四堆后,扔掉多余的一个,取走一堆。那么这堆栗子原来至少有多少个?

该题目属于猴子分桃问题,该问题的常规解法非常复杂,但诺贝尔奖获得者李政道曾就此类问题给出一个极为简便的解法,解题思路可化为以下三道题目:

题目一(简单)

海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。请问原来的栗子数加上3是不是4的倍数?

题目二(中等难度)

海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。第二只猴子来了,它也没有等别的猴子,于是它把剩下的栗子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。请问原来的栗子数加上3是不是16的倍数?

题目三(进阶思考,华杯赛真题)

海滩上有一堆栗子,这是四只猴子的财产,它们想要平均分配。第一只猴子来了,它左等右等别的猴子都不来,便把栗子分成四堆,每堆一样多,还剩下一个,它把剩下的一个顺手扔到海里,自己拿走了四堆中的一堆。第二只猴子来了,它也没有等别的猴子,于是它把剩下的栗子等分成四堆,还剩下一个,它又扔掉一个,自己拿走一堆。第三只猴子也是如此,等分成四堆后,把剩下的一个扔掉,自己拿走一堆;而最后一只猴子来,也将剩下的栗子等分成了四堆后,扔掉多余的一个,取走一堆。那么这堆栗子原来至少有多少个?

以下为答案:

题目一:

答:是。

假设原来栗子的数是x,显然,x-1是4的倍数,

所以,x+3=x-1+4也是4的倍数。

题目二:

答:是。

从题目一知道,x+3必须是4的倍数,

第一只猴子扔1个分4份,且拿走1份后,剩余的栗子数是:

((x+3)-4)*3/4=(x+3)/4-3,

为保证第二只猴子扔1个还能均分4份,

必须有(x+3)/4是4的倍数,

即: x+3是16的倍数。

题目三:

答:253。

从题目二知道,x+3是16的倍数,

类似重复计算,

可得:x+3是256的倍数,

此时x+3最小是256,

所以,栗子最少有253个。

五猴分桃类型题简易通解公式及推导

“五猴分桃”类型题简易通解公式及推导 “五猴分桃”的前身是“水手分椰子”。这是一个非常有名的趣味数学难题,于1926年首先刊登在美国的邮报上。剧说,最早是由伟大物理学家狄拉克提出来的,这一貌似简单的问题曾困扰住了他,为了获得简便的计算方法,他把问题提供给当时的一些数学家,但没有得到满意的结果。1979年,“诺贝尔"物理学奖获得者李政道博士在“中国科技大学少年班”讲学时,特意提到此题;此后,研究该题的简易计算方法,迅速风靡国内。 曾对“五水手分椰子”的广泛流传, 起过重要作用的, 著名现代数理逻辑学家怀德海, 曾用高阶差分方程理论的通解和特解的关系,对“水手分椰子”一题, 给出过一个答案为(-4)的巧妙特解。近十多年来,在后来者的不断努力下,一些比较简便的方法也逐步涌现。但严格的来说:目前所取得的成果,其本上还是仅限于“五猴分桃”这样一个具体的题目上,离全面彻底而又简捷地求解所有这种类型的题目,还存在着一定的距离。 本人曾于1979年, 在月刊《中国青年》看到(五猴分桃)一题, 并用不定方程求得其解。当时,本人觉得就题论题意义己不大。于是通过五、六天的努力,终于演算出,能求解所有这种类题型的完整、简捷的“通解公式”(影响答案的各困素可以任意取值, 并可非常简易的求解,详见下面的计算公式和例题):但是,由于当时自己在乡下,信息闭塞,不知道这个“通解公式”有何意义。一幌三十多年又过去了,前段时间, 因经常上上网,于是惊呀发现:寻找“五猴分桃”类型题的简易计算方法,竟是一个具有深刻背景的,已研论了二、三十年的热门数学话题;而且至今仍未找到完美解决方法。于是自己边回想、边演算,终于又重新推导出了“五猴分桃”类型题的简易“通解公式”。现将其发表如下,与大家共同分享。 “水手分椰子”类型题完整而又简易的通解公式: y=a n-db/c y-被分的某东西的总个数, a-每次分的总份数(一般情况下,是总人数), n-总共分的次数, c-分a份后拿走的份数, b-每次分a份后的余数, d-每次分a份拿走c份后剩下再分的份数, 注;当b/c不为自然数时,则此时该题无解, 也即y无解。 其推导过程如下: 设,最后一个人看到的某物数是: ax+b (x为最后一次分a份后每份的数) 那么,前一个人看到的某物数为: (xa+b)a/d+b=xa2/d+ba/d+b 再前一个人看到的某物数为:(bxa2/d+ab/d+b)=xa3/d2+b(a/d)2+ba/d+b

猴子吃桃子问题大数据结构课程设计

标准文档 目录 1、 .................................................. 需求分析 1 2、 .................................................. 概要设计 1 2.1. 用数组数据结构实现上述求解 (1) 2.2. 用链数据结构实现上述求解 (1) 2.3用栈数据结构实现求解 (1) 2.4用递归实现上述求解 (2) 3、运行环境 (2) 3.1硬件环境 (2) 3.2软件环境 (2) 4、详细设计 (2) 4.1系统流程图 (2) 4.2用数组数据结构实现上述求解 (3) 4.3用链数据结构实现上述求解 (4) 4.4用栈数据结构实现求解 (5) 4.5用递归实现上述求解 (6) 5、调试分析 (7) 6、 .................................................. 运行结果 7 课程设计总结 (8) 参考文献 (9) 附录: (9)

1、需求分析 1、猴子吃桃子问题有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10 天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 要求: 1) 采用数组数据结构实现上述求解 2) 采用链数据结构实现上述求解 3) 采用栈实现上述求解 4) 采用递归实现上述求解 2、概要设计 2.1. 用数组数据结构实现上述求解 在taozi 函数中定义一个一维数组,分别存储每天的桃子个数,根据题目的内容找出各个数之间的关系,用数组元素表示出来,根据用户输入要计算哪一天的桃子,用for 循环控制结束。在main 函数中让用户输入要计算的哪一天,调用taozi 函数,以便用户可查出任意一天的桃子个数,用switch 语句判断用户要执行的功能,然后用while 循环控制,直到用户输入0 为止。 2.2. 用链数据结构实现上述求解 先写出预定义常量和类型,写出结点的类型定义,创建结点,初始化链表,定义变量并初始化,找出结点与其后继结点之间的联系,然后在主函数中控制。 2.3 用栈数据结构实现求解 本部分包括预定义常量和类型,顺序栈的定义,InitStack 函数,Push 函数,和main 函数,在InitStack 函数构造一个空栈,在Push 函数中调用该函数,并在其中编写控制栈顶指针和栈底指针移动的语句,找出指针所指向的数据之间的关系,在main 函数中编写控制循环结束的语句,最后再用main 函数去调用Push 函数。

数据结构课程设计-猴子吃桃问题

数学与计算机学院 课程设计说明书 课程名称: 课程代码: 6015059 题目: 年级/专业/班: 学生姓名: 学号: 312011********* 开始时间: 2014 年 5 月 14 日 完成时间: 2014 年 5 月 28 日 课程设计成绩: 指导教师签名:年月日

目录 1 需求分析 (3) 2 概要设计 (3) 3详细设计 (4) 4调试分析 (11) 5用户使用说明 (12) 6测试结果 (12) 7 结论 (14) 致谢 (15) 参考文献 (15)

摘要 本课程设计主要解决猴子吃桃子的问题。一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。在课程设计中,系统开发平台为Windows 2000,程序设计设计语言采用Visual C++,数据库采用MS SQL 2000,程序运行平台为Windows 98/2000/XP。在整个程序中分别采用数组数据结构、链数据结构、递归等结构形式实现此问题的求解。程序通过调试运行,初步实现了设计目标。 关键词:程序设计;C++;数组;链;递归;猴子吃桃 引言 在日常生活中经常遇到一些与数据计算有关的问题,许多与猴子吃桃问题类似的问题要求用计算机程序语言来解决,用这个程序算法可以解决一些类似问题,以便利于生活实际。

1 需求分析 1.1任务与分析 任务功能:有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子 要求: 采用数组数据结构实现上述求解 采用链数据结构实现上述求解 采用递归实现上述求解 如果采用4种方法者,适当加分 分析: 这个课程设计分为三个部分,即分别用三种不同的方法解决猴子吃桃子问题。每个部分都有不同的算法思想。 用数组结构实现的算法,通过构造求桃子数的数组,然后输出要求的项来实现。 用链结构实现的算法,则是建立链表,将每天的桃子数目存入链表,然后输出第一天的桃子数。 用递归结构实现的算法,是通过函数本身的特点,反复调用自身,最后找到递归的出口,求得算法的解。 1.2测试数据 输入任意一篇文章,按要求输入功能序号与字符串。 测试是否能按要求输出正确结果。 2 概要设计

五猴分桃(供《列一元一次方程》)

五猴分桃(供《列一元一次方程》) 这是著名物理学家李政道先生访问中国科学技术大学时,曾经考过该大学的少年班的问题,但没有人能答出来. 5只猴子一起摘了1堆桃子,因为太累了,它们商量决定先睡一会儿再分. 过了不知多久,来了一只猴子,它见别的猴子没来,便将这一堆桃子平均分成5份,结果多了1个,它就将多的这个吃了,拿走了其中的一堆.又过了不知多久,第二只猴子来了,它不知道有一个同伴已经来过,还以为自己是第一个到的呢,于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个桃子,拿走了其中的一堆.第三只、第四只、第五只猴子都这样……试问这五只猴子至少摘了多少个桃子?第五个猴子拿走后还剩下多少个桃子? 据说这个问题是物理学家狄拉克提出来的,很多人尝试着做过,包括狄拉克本人在内,都没有找到很简便的解法.李政道教授说,著名数理逻辑学家和哲学家怀德海曾经用高阶差分方程理论中通解与特解的关系,给出了一个巧妙的解法. 但是,张景中先生却说“仔细想想,有一个十分简单有趣的解法,小学生都不难理解”.下面我们把张先生所说的“小学生都能理解”的两种方法提供给读者,供参考.解法一:设这一堆桃子至少有x个,由于每次平均分成五堆后都多一个,因此借给它们4个,于是连同这4个桃子,一共有(x+4)个桃子. 假定这五子猴子分别拿走了(包括它们各自所吃掉的1个)a、b、c、d、e个桃子.于 是,a=;b=;c=;d=;e=.而e为整数,且256与3125互质,因此x+4应是3125的倍数,于是x+4=3125k,其中k为自然数.显然,当k=1时,x=3121.即这五只猴子至少摘了3121个桃子. 解法二:设第五只猴子拿走了x只桃子,那么第五只猴子取桃子前的桃子数是(5x+1);第四只猴子取桃子前还有的桃子数是[];第三只猴子取桃子前还有{ []+1}个桃子;第二只猴子取桃子前还有{[]+1}+1个桃子; 第一只猴子取桃子前一共有{{[]+1}+1}+1=12x+8+个桃 子. 设x +1=256k,则x=256k-1,于是这堆桃子一共有12(256k-1)+8+53k=3125k-4. 显然,当k=1时,桃子数最少,因此,这五只猴子至少摘了3121个桃子.

简单的儿童绕口令:《猴子吃桃子》

简单的儿童绕口令:《猴子吃桃子》 【狗】南边来了他大大伯子家的大搭拉尾巴耳朵狗,北边来了他二大伯子家的二搭拉尾巴耳朵狗 他大大伯家的大搭拉尾巴耳朵狗,咬了他二大伯家的二搭拉尾巴耳朵狗一口; 他二大伯家的二搭拉尾巴耳朵狗,也咬了他大大伯家的大搭拉尾巴耳朵狗一口 不知是他大大伯家的大搭拉尾巴耳朵狗,先咬了他二大伯家的二搭拉尾巴耳朵狗; 还是他二大伯家的二搭拉尾巴耳朵狗,先咬了他大大伯家的大搭拉尾巴耳朵狗 【猴子吃掉小桃子】猴子吃掉小桃子】树上有只小桃子,树下有只小猴子 风吹桃树哗哗响,树上掉下小桃子 桃子打着小猴子,猴子吃掉小桃子 【白庙、白猫、白帽】白庙、白猫、白帽】山顶有座白庙,白庙里有只白猫 白庙外有顶白帽,白猫看见了白帽,叨着白帽跑进了白庙 【东边一座楼】东边一座楼】一座楼东边一座楼,楼上两人打拳头 拳头打,打拳头 来了一个人,拉了一头牛,将牛拴在楼脚下,看他两人打拳头 拳头打,打拳头 又来了一个人,领了一只猴,将猴放在牛脚下,看他两人打拳头 拳头打,打拳头 又来了一个人,挑了一担油,将油放在猴脚下,看他两人打拳头 拳头打,打拳头 又来了一个人,挑了一担绸,将绸放在油脚下,看他两人打拳头 拳头打,打拳头,两人打垮车边楼

垮子楼,压倒牛,牛一蹲,蹲倒猴,猴一抓,抓倒油,油一泼,泼上绸 绸问油,卖油买绸来赔绸; 油问猴,卖猴买油来赔油; 猴问牛,卖牛买猴来赔猴; 牛问楼,卖楼买牛来赔牛 只问绸扯油来油扯猴,猴扯牛来牛扯楼

电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。电子版文档,可直接编辑。希望对您有所帮助,本文件仅供个人使用,不得商用。

猴子吃桃子问题大数据结构课程设计.doc

标准文档 目录 1、需求分析 (1) 2、概要设计 (1) 2.1. 用数组数据结构实现上述求解 (1) 2.2. 用链数据结构实现上述求解 (1) 2.3 用栈数据结构实现求解 (1) 2.4 用递归实现上述求解 (2) 3、运行环境 (2) 3.1 硬件环境 (2) 3.2 软件环境 (2) 4、详细设计 (2) 4.1 系统流程图 (2) 4.2 用数组数据结构实现上述求解 (3) 4.3 用链数据结构实现上述求解 (4) 4.4 用栈数据结构实现求解 (5) 4.5 用递归实现上述求解 (6) 5、调试分析 (7) 6、运行结果 (7) 课程设计总结 . (8) 参考文献 (9) 附录: . (9)

1、需求分析 1、猴子吃桃子问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10 天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 要求: 1)采用数组数据结构实现上述求解 2)采用链数据结构实现上述求解 3)采用栈实现上述求解 4)采用递归实现上述求解 2、概要设计 2.1. 用数组数据结构实现上述求解 在 taozi 函数中定义一个一维数组,分别存储每天的桃子个数,根据题目的内 容找出各个数之间的关系,用数组元素表示出来,根据用户输入要计算哪一天的桃 子,用 for 循环控制结束。在main 函数中让用户输入要计算的哪一天,调用taozi 函数,以便用户可查出任意一天的桃子个数,用 switch 语句判断用户要执行的功 能,然后用 while 循环控制,直到用户输入 0 为止。 2.2. 用链数据结构实现上述求解 先写出预定义常量和类型,写出结点的类型定义,创建结点,初始化链表,定 义变量并初始化,找出结点与其后继结点之间的联系,然后在主函数中控制。 2.3 用栈数据结构实现求解 本部分包括预定义常量和类型,顺序栈的定义,InitStack函数,Push函数, 和 main 函数,在 InitStack 函数构造一个空栈,在 Push函数中调用该函数,并在其中 编写控制栈顶指针和栈底指针移动的语句,找出指针所指向的数据之间的关系, 在 main 函数中编写控制循环结束的语句,最后再用main 函数去调用 Push 函数。

数据结构课程设计--猴子吃桃问题

数据结构课程设计报告题目:猴子吃桃问题 院(系):数理学院 专业:信息计算科学 班级:计科 1101 学生:史城逸 学号: 1104101127 指导老师:周海岩 2012年6月

摘要 当下C++语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C++知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。猴子吃桃的问题就是一个例子,我们可以运用简单的三种解法进行解题,即数组求值解法,链表求值解法和递归求值解法,通过分析三种解法,根据各种解法的功能从而我们得到最合适的求法。 关键词:猴子吃桃,数组法,链表法,递归法,分析 Abstract The c + + language is an important course study, learn to use and in combination with other knowledge problem solving is a worthy together we value, the data structure to be a combination C++ knowledge important course, so we have to learn how to use the knowledge will usually textbooks to our reality life, so that we can apply the knowledge more deeply. The monkeys eat the peach problem is one example, we can use simple three solution to problem solving, namely array evaluated method, the list of the evaluated hydrolysis and recursion evaluated method, through the analysis of three kinds of solution, according to various methods to get the most appropriate functions we the method. Key words: the monkeys eat the peach, the array method, chain table method, a recursive method, analysis

猴子吃桃子问题 数据结构课程设计

目录 1、需求分析 (1) 2、概要设计 (1) 2.1.用数组数据结构实现上述求解 (1) 2.2.用链数据结构实现上述求解 (1) 2.3 用栈数据结构实现求解 (1) 2.4 用递归实现上述求解 (2) 3、运行环境 (2) 3.1 硬件环境 (2) 3.2软件环境 (2) 4、详细设计 (2) 4.1系统流程图 (2) 4.2用数组数据结构实现上述求解 (3) 4.3用链数据结构实现上述求解 (4) 4.4用栈数据结构实现求解 (5) 4.5用递归实现上述求解 (6) 5、调试分析 (7) 6、运行结果 (7) 课程设计总结 (8) 参考文献 (9) 附录: (9)

1、需求分析 1、猴子吃桃子问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 要求: 1) 采用数组数据结构实现上述求解 2) 采用链数据结构实现上述求解 3) 采用栈实现上述求解 4) 采用递归实现上述求解 2、概要设计 2.1.用数组数据结构实现上述求解 在taozi函数中定义一个一维数组,分别存储每天的桃子个数,根据题目的内容找出各个数之间的关系,用数组元素表示出来,根据用户输入要计算哪一天的桃子,用for循环控制结束。在main函数中让用户输入要计算的哪一天,调用taozi 函数,以便用户可查出任意一天的桃子个数,用switch语句判断用户要执行的功能,然后用while循环控制,直到用户输入0为止。 2.2.用链数据结构实现上述求解 先写出预定义常量和类型,写出结点的类型定义,创建结点,初始化链表,定义变量并初始化,找出结点与其后继结点之间的联系,然后在主函数中控制。 2.3 用栈数据结构实现求解 本部分包括预定义常量和类型,顺序栈的定义,InitStack函数,Push函数,和main函数,在InitStack函数构造一个空栈,在Push函数中调用该函数,并在其中编写控制栈顶指针和栈底指针移动的语句,找出指针所指向的数据之间的关系,在main函数中编写控制循环结束的语句,最后再用main函数去调用Push函数。

小猴吃桃情境图

师:“同学们想一想,你们以前见过0吗?”让学生拿出自己的直尺,教师出示直尺图。然后让学生先在直尺上找到0,再找到1,说明0到l是一段。用1表示;接着我2,说明0到2是两段,用2表示……一段一段地数到5。说明0是开始,是起点。0在1的前面。带着学 生从0到5数几遍教学过程: 一、情境导入(课件出示小猴吃桃情境图) 今天,老师给大家带来了一个小客人,看,他是聪明可爱的小猴子!因为小猴上课专心听讲,积极发言,所以妈妈奖励了他。老师希望大家也向小猴学习! 下面咱们一起看猴妈妈给小猴买了什么奖品。咦,桃子!瞧,小猴看到奖品多高兴呀,(出示图片1)(生说)大家一起说,妈妈奖励了小猴几个桃子?那也就是说这时盘子里桃子的数量用数字几表示?看到桃子,小猴乐呵呵地吃了起来。(生:2)盘子里桃子的数量用数字几表示?(生1)这桃子真香呀,他忍不住又吃了一个,现在盘子里还有桃子吗?这时盘子里桃子的数量用数字几表示?(0 )小猴吃完了桃,美滋滋地舔了舔嘴巴说:这桃真好吃。师:其实0和1,2一样,也是一个数,0表示没有。 板书课题(0的认识)师:今天,咱们就和0交个朋友吧。 二、新授 1.感受0的意义:A:没有 师:接下来咱们一起玩游戏吧 游戏一:猜手指:要求是老师出示手指,大家一起说用数字几表示出示3个手指:可以用数字几表示?(生:3)出示1个手指:可以用数字几表示?(生:1)出示拳头:可以用数字几表示呢?(生:0)问:为什么用0表示?

游戏二:看谁反应快 师:师报数,生击掌2,0问:老师报0时,为什么不击掌? 举例:你能说一个生活中用0表示没有的例子吗? 2.感受0的意义:B:起点 师:0除了表示没有之外,它还有很多的小秘密,咱们一起去找找吧,大家拿出直尺仔细观察,直尺上的0在哪儿?在几的前面?观察尺子左边的0,(点击课件0)猜猜看,这个0也是表示没有吗?想想看,直尺上的刻度是从哪里开始的?(生:从0开始的)对,从0开始,我们就可以说,0表示的是起点(板书:起点) 师:观察尺子,从0这个起点开始,数字会越来越大,数字越大,离起点0越远,利用这个原理,以后我们会学习用直尺量物体的长度。读数(先顺读再倒读) 举例:你还见过生活中哪些地方用0表示起点吗? 师:的确,生活中用0表示起点的例子很多,老师这里也准备了几张生活中用0表示起点的图片,一起来欣赏一下。(出示图片:①.起跑图110米栏世界冠军刘翔站在跑道的那个位置可以用0来表示。②.立定跳远图。这样,大家在同一起点开始,比赛才公平) 3.感受0的意义:C界限 师:我们知道了0可以表示没有,也可以表示起点。它还表示其他意义呢,示温度计:这上边也有0,如莫旗某日的最低气温是0℃,显然不能说这一天莫旗“没有”温度。这里,温度计的刻度“0”以上的数表示零上几度,“0”以下的数表示零下几度,“0”起了“零上

五猴分桃

五猴分桃 著名美籍华人科学家李政道在一次回国讲学期间,曾给中国科技大学少年班的同学出了这样一道古时的趣题: 五只猴子采得一堆桃,它们约定次日早起来分。半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。第三只,第四只,第五只猴子都依次如此做了。问桃子数最少有多少个? 我们试列方程来求解: 设原有桃子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. 于是满足题意的解为:

猴子吃桃问题数据结构课程设计

一、设计题目猴子吃桃子问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 二、运行环境(软、硬件环境) VC++6.0 PC电脑一台 三、算法的需求分析 1)采用数组数据结构实现上述求解 2)采用链数据结构实现上述求解 3)采用递归实现上述求解 4)如果采用4种方法者,适当加分 //用户界面 int Desk(int n) { printf("**************************************************\n"); printf("| 欢迎进入猴子吃桃子系统|\n"); printf("| 1-数组法2-链表法3-递归法4-二叉树法5-退出|\n"); printf("***************************************************\n"); printf("请输入要选择的方法: "); scanf("%d",&n); getchar(); system("cls"); //刷新屏幕 while(n<1 || n>5) { printf("***输入错误! 请重新输入***\n"); scanf("%d",&n); } return n; } 四、算法概要设计 //采用链数据结构(栈) 实现上述求解 typedef struct { int *top; int *base; }stack;

//初始化一个栈 stack Init(stack *s) { s->base=(int *)malloc(STACK_SIZE*sizeof(int)); if(s->base == NULL) { printf("Init failed !\n"); exit(-1); } s->top = s->base; return *s; } //二叉树 创建一个大小为DAYS(由用给出)的二叉树,二叉树的左孩子节点存放当天的桃子数,右节点存放数字1,即为多吃的一个桃子。 typedef struct TNode { int data; struct TNode *lchild; struct TNode *rchild; }tree; //创建一个二叉树 tree CreatTree(tree *T) //T 为指针类型 { int n=0,i=0; tree *p,*pr,*T1; T=(tree *)malloc(sizeof(TNode)); T1=T; T->data=1; //根节点的数据为第DAYS天的桃子数 for(i=1; ilchild=NULL; pr->rchild=NULL; p->data=0; pr->data=1; T1->lchild=p; T1->rchild=pr; T1=p; } T1->lchild=NULL; T1->rchild=NULL; return *T; //返回T的地址 }

猴子分桃子的数学问题

《数学文化》(公选课)论文考察 学院:材料与化学化工学院 专业:化工与制药 姓名:王林 学号: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

猴子吃桃子递归算法

递归算法案例—猴子吃桃子 一、案例描述 某天,一只猴子摘了一堆桃子,具体多少它没数。猴子每天吃了其中的一半然后再多吃了一个,第二天吃剩余的一半后再多吃了一个,直到第10天,猴子发现只有一只桃子。问这只猴子在第一天摘了多少个桃子 二、算法分析 这只猴子共用了10天吃桃子,只知道最后一天剩余1只桃子,要想求出第1天剩余的桃子数,就先要求出第2天剩余的桃子数,以此类推。假设An表示第n天剩余的桃子数量,则有如下关系: A1=(A2+1) x 2 A2=(A3+1) x 2 A3=(A4+1) x 2 …. A1=(A10+1) x 2 A10=1 从上述的式子可知,只能通过倒推来求得第一天的桃子数 三、算法实现 算法代码实现如下: #include /** *@briefpeach *@paramn:猴子吃桃子的天数 *@return */ long peach(int n){ int pe; if(n==1){ return1; }else{ pe=(peach(n-1)+1)*2; } return pe; } int main(void) { int n;//天数 long peachnum;//最初桃子数

printf("pleasenumberofDate"); scanf("%d",&n); peachnum=peach(n); printf("Thepreviousnumberis:%1d",peachnum); return0; } 程序中使用递归调用peach函数来计算第一天的桃子数量。其中关键是前一天总比后一天多一半加1.当n=10的时候,正好求出猴子吃桃子问题

C语言程序设计五猴分桃问题实验报告

课程设计报告 学院、系:吉林大学珠海学院计算机科学与技术系专业名称:软件工程 课程设计科目C语言程序课程设计所在班级:10班 学生学号:04121010 学生姓名:赵学文 指导教师:郭晓燕 完成时间:2013年3月-5月

五猴分桃问题 一、设计任务与目标 关于五猴分桃问题,已经有很多人思考和尝试建立了一些程序解决。五猴分桃,五只猴子合作摘了很多桃子,感到累了,决定先去睡觉,醒后再分。不知过了多久,第一只猴子醒了,看见其它猴子都没有醒,就把所有桃子分为五堆,发现多一个,就吃了一个,拿走一堆,把剩下的又堆在一起走了。第2只猴子醒来,以为自己是第一个,也是把桃子分为五堆,也是多一个,就吃了一个,拿走一堆,剩下的又堆在一起走了。第3,4,5只猴子都是这样归根究底是一个数学上的问题,但在程序员眼中,解决一个问题,不仅要得出答案,还要以最简便的方法,在最短的时间内得出答案。所以,即使这是一个耳熟能详的问题,不同程序员眼里,也有不同的方法。在复杂之中提取捷径便是我的目的,完成这个设计,能提高自我能动性,并联系数学实际。我希望通过这次设计,增强自我独立能力,并进一步激发我对编程这一方面的兴趣。 二、方案设计与论证 对于这一个问题,难就难在每次分时都多出1个桃子。这又关系到数学问题,每次少1个,数据不确定,如果从大方面去考虑的话,计算过程确实比较复杂。既然如此,何不从另一个角度入手?我们没必要先去猜这堆桃子到底总共有多少个,大概范围为多少。实际上可以理解桃子里少了4个;于是,我们可借给它们4个再分。为什么?因为尽管多了四个,但每个猴子分得的桃子不会多,也不会少,且每次都可以被5整除。怎样借?方法其实很简单,就是数学的假设问题。我们不妨先设借到4个桃子后的总数为X,原来桃子的总数为Y。则有Y=X-4。第一只猴子分完后的总数为:A=X/5*4; 第二只猴子分完后的总数为:B=A/5*4=X/25*16; 第三只猴子分完后的总数为:C=B/5*4=X/125*64; 第四只猴子分完后的总数为:D=C/5*4=X/625*256; 第五只猴子分完后的总数为:E=D/5*4=X/3125*1024; 事实上每次分前,猴子的数量都不变。分后,桃子的堆数也不变。于是,各猴子

一个猴子吃3个桃子多出一个

1. 一个猴子吃3个桃子多出一个,一个猴子吃4个桃子就少2个。问有几个 猴子几个桃子。 2.如下图,把3、4、6、7四个数填在四个空格里,使横行、竖行三个数相加都得14。怎 样填? 1.哥哥有4个苦果,姐姐有3个苹果,弟弟有8个苹果,哥哥给弟弟1个后,弟弟吃了3 个,这时谁的苹果多? 2.小明今年6岁,小强今年4岁,2年后,小明比小强大几岁? 3.同学们排队,小明前面有4人,后面有4人,这一队一共有多少人? 4.有一本书,小华第一天看了2页,以后每一天都比前一天多看2页,第4天看了多少页? 5.同学们排队做操,从前面数,小明排第4人,从后面数,小明排在第5人,这一队一共有多少人? 6.有8个皮球,如果男生每一发一个,就多2个,如果女生每人发一个,就少2个,男生有多少人?女生有多少人? 7.老师给9个三好生每人发一朵花,还多出1朵,老师共有几朵花? 8.有5个同学投沙包,老师如果了给每人2个沙包就 差1个,老师共有多少个沙包? 9.明明有9本书,爸爸给他买了5本,小明借去2本,

明明还有几本书? 10.排队做操时按高矮排列,李平前面有8个比他高, 后面有2个比他矮,这一队有多少人? 11.小林吃了8块饼干后,还有4块,小林原来有多少 块饼干? 12.哥哥送给弟弟5支铅笔后,还剩下6支,哥哥原来 有几支铅笔? 13.第二组有8名男同学,女同学和男同学一样多,第 二组共有多少名同学? 14.小华和小刚第人有10张卡片,大华给了小刚2张 后,小刚比大华多几张? 15.妈妈给小华5个苹果,给小刚4个苹果,小华和小 刚共吃了6个,他们还有几个苹果? 16.同学们去体育馆去借球,一班借了9个,二班借了 6人,体育馆的球减少了多少个? 17.明明从布袋里拿出5个白皮球和5个黄皮球,现在 白皮球剩下10,黄皮球剩下5个。原来布袋里有多个白皮球和多少个黄皮球? 18.芳芳做了14朵花,晶晶做了8朵,芳芳要晶晶几 朵两人才一样多? 19.妈妈买回下些鸭蛋和12个鸡鸡蛋,吃了8个鸡蛋 后,剩下的鸡蛋和鸭蛋同样多,妈妈共买回几个

猴子吃桃问题

软件综合课程设计 猴子吃桃问题 学生搭配问题 二〇一四年六月

《猴子吃桃子课程设计》报告 一、问题陈述 猴子吃桃子问题: 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 二、需求分析 要求:1.采用数组数据结构实现上述求解; 2.采用链数据结构实现上述求解; 3.采用递归实现上述求解。 三、概要设计 四、详细设计 猴子每天都吃当前桃子的一半多一个,假设今天还有n个桃子,则前一天就有(n+1)*2个桃子。又已知第十天只剩下一个桃子,则可代入以上公式求出第九天的桃子数,以此类推求下去便可得到第一天的桃子数。 1.采用数组数据结构实现上述求解 声明一个长度为10的整形数组arr[10],分别存放各天猴子吃前的桃子数。下图所示 arr[0] arr[1]arr[2]arr[3] arr[4]arr[5]arr[6]arr[7] arr[8]arr[9]先将arr[9]赋值为1,用一个循环语句 for (int i=9; i>0; i--)

{ arr[i-1]=2*(arr[i]+1); } 为其余各数组元素赋值,则数组元素arr[0]的值便是该问题的解。 2.采用链数据结构实现上述求解 建立单链表,声明一个类用来对链表的结点指针进行定义,在初始化函数中利用头插法创建具有10个元素的链表。 那么N 10便是要求问题的解。 3.采用递归实现上述求解 利用一个递归函数来进行求值:依据返回值来记录每一天剩余桃子情况。 int UseRecursion(int n) { int m; if(n==1) m=1; else m=(UseRecursion(n-1)+1)*2; return m; } 五、程序代码 1.头文件“MEP.h “ #ifndef MEP_H #define MEP_H #include #include using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; void UseLinkList();

猴子分桃问题

猴子分桃问题 ★实验任务 动物园里的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 40 1 3 5 2 4 PS:有一种情况上面的问题没有描述,就是当筐中桃子数加上队首猴子已取得的桃子数正好等于m时,按照给的例子应该是管理员要往框中放k个桃子。 这是一个明显的队列问题,所以用queue写了一个,看对大家有帮助不,遗憾的是回收内存时老是出错,于是就没有回收,会造成内存泄露,不过对这个问题而言影响不大。有什么办法可以解决可以告诉我,暂时不想研究了。。。。 #include #include using namespace std; class monkey{ public: int id; int peach; monkey(int imky) { id=imky; peach=0; }

小学奥数猴子分桃练习及答案【三篇】

小学奥数猴子分桃练习及答案【三篇】 导读:本文小学奥数猴子分桃练习及答案【三篇】,仅供参考,如果觉得很不错,欢迎点评和分享。 【篇一】给猴子们分桃子,如果每个猴子分7个多出2个,如果每个猴子分8个,少5个, 问:有多少个猴子?有多少个桃子? 每个猴子分7个多出2个可以理解为:如果每个猴子分7个,少5个! 7和8的最小公倍数是7×8=56所以桃子有:56-5=51个51÷7=7余2 猴子有7只【篇二】1只猴子分5个桃,余7个桃;1只猴子分7个桃,少5个桃。有多少只猴子?多少个桃?只猴子分5个桃,余7个桃;1只猴子分7个桃,少5个桃。有多少只猴子?多少个桃?分析:“1只猴子分7个桃,少5个桃”,可以这样理解:如果加5只桃子,就能使每只猴子分到7个桃子。这样从“1只猴子分5个桃”变成“1只猴子分到7个桃子”,只要增加7+5=12(个)桃子就可以了。这样每只猴子能多分7-5=2个桃子。猴子只数:12÷(7-5)=6(只)桃子数:5×6+7=37(个)【说个简单点的:去掉7个桃子,每只猴子分5个,增加7+5=12(个)桃子,每只猴子分到7个桃子。或者:每只猴子要多分(7-5=)2个桃子,要增加12个桃。】【篇三】5个猴子分桃子问题,跪求~~~~数学好的进,有5个猴子分一堆桃子,不可以平分,5个猴子都回去睡觉了,晚上,第一个猴子深夜偷偷起来,丢掉一个桃子,正好可以5个人分,于是,他拿掉自己的那份回

去了。第二个猴子也起来了,又丢了个桃子,又正好可以5个人分,于是,他也拿着自己的那份走了,后面的3,4,5猴子都是用同样的方法,也都正好。问:至少有几个桃子。设第5个猴子第一只猴子到时剩下1×5+1=6 第二只猴子到时剩下 6×5+1=31 第三只猴子到时剩下31×5+1=156第四只猴子到时剩下156×5+1=781第五只子到时781 ×5+1=3906 所以桃子总数是3906个

小猴子吃桃子看图写话.doc

小猴子吃桃子看图写话 【篇一:小猴子吃桃子看图写话】 沙利艾 秋天来了,田林园的果子成熟了,猴妈妈和小猴去园里摘果子吃,小猴看见一个个有红又大的桃子,馋得直流口水。 小猴子撒娇的说:"妈妈!妈妈我想吃桃子!" "要吃多少?"猴妈妈温和的说。 小猴子欢快的说"很多!很多的桃子!" "一天吃三个,够不够?"小猴子撅着小嘴,不高兴的摇摇头说:"不要不要!太少了!太少了!" 猴妈妈眼球一转说:"三天吃九个,够不够?" 小猴子数数手指,又蹦又跳乐呵呵的说:"好呀!好呀!谢谢妈妈。" 后来,猴妈妈按约定给小猴子吃桃子,慢慢的小猴才发觉不对劲。 【篇二:小猴子吃桃子看图写话】 朱靖祺 一个烈日炎炎的中午,小猴子来到桃树下玩耍,抬头一看,看见了很多很多的大桃子,口水都流了两米长,小猴就跑回家抱着妈妈的大腿在撒娇。 "妈妈,妈妈,我要吃又大又红的大桃子。"

"那就一天吃三个"。猴妈妈笑着说道,"够不够了呢?" 小猴子大声地说:"不够,不够,我要吃很多很多的桃子。" "那就三天吃九个大桃子吧!"妈妈在旁边偷笑说道。 小猴子听了,大声叫了起来:"够了,够了,谢谢妈妈,你真是个好妈妈。" 这真是只活泼可爱的笨猴子啊! 【篇三:小猴子吃桃子看图写话】 曾秋 一个阳光明媚的早晨,猴妈妈带小猴子去桃园里,小猴子看见又红又大的桃子,"妈妈我想吃桃子,好不好?"小猴子摇了摇猴妈妈的手说。 猴妈妈摸了摸小猴子的头说:"一天吃三个,够不够?" "不够不够!太少太少!"小猴急忙摇了摇手,"妈妈一天才吃三个,我不够吃呀!" 猴妈妈突然灵机一动说:"三天吃九个,够不够?" "够了,够了!谢谢妈妈!" 【篇四:小猴子吃桃子看图写话】 向芸萱 在一个阳光明媚的早晨,小猴子去和旁边的邻居家帮忙。 它回到家就撒娇地对猴妈妈说:"妈妈,我想吃桃子。" "一天吃三个,够不够?"猴妈妈对小猴温柔地说。 "不够不够!"小猴子又摇头又摇手地说,"太少太少!"

相关文档