百钱买百鸡解题思路数学

合集下载

多种解法求百钱百鸡问题

多种解法求百钱百鸡问题

学号:0121210680225《算法设计与分析B》大作业题目多种解法求百钱百鸡问题学院计算机科学与技术学院专业软件工程班级Sy1201姓名李安福指导教师何九周2014 年12 月26 日多种解法求百钱百鸡问题摘要:中国古代数学家张丘建提出的“百钱买百鸡”可以采用蛮力法来解决。

本文给出了百钱百鸡问题的描述,采用蛮力法来解决这个问题,并通过分析对算法进行了优化,进一步提高了解决此问题的效率。

关键字:枚举,执行效率,蛮力法,不定方程,循环变量。

1引言蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概念定义。

这种方法经过很少的思考,把问题的所有情况或所有的过程交给计算机去一一尝试,从中找出问题的解。

由于计算机运算速度快,在解决问题时可采用这种“懒惰”的策略。

蛮力法的主要优点在于它是有广泛的适用性和简单性;它的缺点是大多数蛮力算法的效率都不高。

2问题概述 百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?3问题的分析题目分析与算法设计这是一个古典数学问题我们假设公鸡、母鸡和小鸡的个数分别为x,y,z,那么买公鸡的钱数为5x ,买母鸡的钱数为3y ,买小鸡的钱数为z/3;再由题意,x,y 和z 的和为100,问题化为可三元一次方程组,该问题的数学模型如下:⎩⎨⎧=++=++)(100)(1003/35百鸡百钱z y x z y x这里x,y,z 为正整数,且z 是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z 的取值范围:1) x 的取值范围为1~20 2) y 的取值范围为1~33 3) z 的取值范围为1~99对于这个问题我们可以用穷举的方法,遍历x,y,z 的所有可能组合,最后得到问题的解。

4算法设计 4.1算法设计14.1.1数据要求问题中的常量: 无无问题的输出:int x,y,z /*公鸡、母鸡、小鸡的只数*/4.1.2初始算法1.初始化为1(循环语句中初始值为1);2.计算x循环,找到公鸡的只数;3.计算y循环,找到母鸡的只数;4.计算z循环,找到小鸡的只数;5.结束,程序输出结果后退出。

百钱百鸡问题的课程思政

百钱百鸡问题的课程思政

百钱百鸡问题的课程思政百钱百鸡问题是一个经典的数学问题,它涉及到了数学、逻辑和实际生活中的情景。

它也可以成为课程思政中一个有趣的教学案例,通过这个问题可以引发学生对数学思维、逻辑思维以及生活中的实践运用的思考和学习兴趣。

百钱百鸡问题的问题描述是这样的:有一百只鸡和一百个钱,其中公鸡每只5元,母鸡每只3元,小鸡每只1元。

现在要用100元买100只鸡,问公鸡、母鸡、小鸡各有多少只?在课程思政中,可以通过百钱百鸡问题来引导学生进行数学思维的训练和逻辑思维的发展。

首先,让学生对问题进行分析,引导他们建立数学模型,通过代数方程的建立和解答,培养他们的数学运算能力和逻辑推理能力。

其次,引导学生对实际生活中的情景进行思考,如何用数学方法解决生活中的实际问题,培养学生的实际运用能力和创新能力。

在解决问题的过程中,学生会思考每只鸡的价格和数量之间的关系,同时也会思考不同种类的鸡之间的数量关系。

这样的思维活动可以培养学生的观察力、分析能力和解决问题的能力。

解决问题的过程也是一个探索过程,可以培养学生的好奇心和求知欲,激发他们对数学、逻辑、科学的兴趣。

另外,百钱百鸡问题也可以引导学生进行讨论和合作。

在解决问题的过程中,学生可以分小组进行讨论和合作,共同思考问题的解决方案,锻炼他们的合作能力和团队精神。

通过这样的合作讨论,可以增强学生对问题的深入理解,培养他们的团队合作精神,激发他们的创新思维。

通过百钱百鸡问题的教学,可以让学生在启发式的学习中获得知识和能力的提升。

同时也可以让学生在实践中体验到数学的美妙和应用的奇妙,激发他们对数学学科的兴趣和热爱。

在这个过程中,学生不仅仅是在解决一个数学问题,更是在培养自己的各种能力,提升自己的综合素质。

总之,百钱百鸡问题是一个既有趣又有益的数学问题,它可以成为课程思政中的一个很好的案例。

通过这个问题,可以引导学生进行数学思维和逻辑思维的训练,培养他们的实践运用能力和创新精神,激发他们对数学学科的热爱和兴趣。

百钱百鸡问题

百钱百鸡问题

百鸡问题
公元5世纪末,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样的一个问题:“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一.百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”意思是公鸡5元一只,母鸡3元一只,小鸡1元三只。

用100元100只鸡,求公鸡、母鸡、小鸡各买几只。

假设a 为公鸡只数,b 为母鸡只数,c 为小鸡只数,如果把问题转化为n 元钱买n 只鸡,针对上述问题n =100,根据题意可得出下面的约束方程:
53/3%30
a b c n
a b c n c ++=++==
用穷举法实现如下所示:
图4.3 穷举法求解百鸡问题
这个算法有三重循环,枚举公鸡数量的外循环,枚举母鸡数量的中间循环以及枚举小鸡数量的内循环,主要执行时间取决于内循环的循环体的执行次数,需要执行(n+1)3次,当n=100时,内循环需要执行大于100万次。

考虑到n元钱只能买到n/5只公鸡或n/3只母鸡,因此有些组合可以不必考虑,而小鸡的数目又取决于公鸡和母鸡的只数,上述的内循环可以省去。

图4.3 改进算法求解百鸡问题
改进算法只有两层循环,枚举公鸡数量的外循环和枚举母鸡数量的内循环,内循环的执行次数为(n/5+1) (n/3+1)。

当n=100时,内循环执行21*34=714次,这和穷举算法的100万次相比,仅为原来的万分之七,有重大改进。

百钱买百鸡解题思路

百钱买百鸡解题思路

"百钱买百鸡"是一道著名的数学问题,常见于数学启蒙教育。

问题的描述是:一位农夫有100枚钱,想用这100枚钱买100只鸡。

其中,公鸡每只5元,母鸡每只3元,小鸡三只1元。

问农夫分别应该买多少只公鸡、母鸡和小鸡才能使总共用100枚钱买到100只鸡?
解决这个问题可以采用代数方法,设公鸡、母鸡和小鸡的数量分别为x、y、z。

则可以建立以下方程:
1. 5x + 3y + z/3 = 100 (总花费等于100枚钱)
2. x + y + z = 100 (总数量等于100只鸡)
通过这两个方程组可以解得x、y、z的值,从而得知应该买多少只公鸡、母鸡和小鸡。

这个问题的解有多组,因此可能存在多种合理的答案。

这是一个典型的线性方程组问题,可以通过代数方法或者其他解方程的方法求解。

百钱买百鸡实验报告

百钱买百鸡实验报告

一、题目描述我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?二、解题思路对n=100的情况,因为有三个变量,则有三重循环和二重循环两种算法1、算法一:三重循环(1)变量变化范围的确定:由于公鸡5钱一只,则100钱最多可购买100/5=20只公鸡,此即为第一个变量的变化上限;由于母鸡3钱一只,则100钱最多可购买100/3≈33只母鸡,此即为第二个变量的变化上限;由于小鸡三只一钱,而所有鸡的总数不得超过100只,则100即为第三个变量的变化上限;(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;2、二重循环:(1)变量变化范围的确定:由于整题共有3个变量,所以当前两个变量确定后,第三个变量自然被确定下来,故可采用二重循环解题。

前两个变量的确定同三重循环,第三个变量则用c=n-a-b来确定;(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;由于需要讨论算法的时间性能,在程序中加入时间函数计算程序运行所需的时间进行比较。

用控制变量的方法,对两种算法中的n进行同样的变化处理,来讨论两种算法的时间性能,e.g.分别令n=100,n=200,n=500,n=1000,n=2000,n=5000三、自我评估、反思由于较长时间未使用C语言编程,所以在使用语法上略显生疏了些,通过这次作业的实践过程,对C语言的编程语法规则熟悉了许多,虽然在运行过程中出现了一些错误,但也都能够较快地解决,第一次的数据结构实验作业总体完成的还算比较顺利。

百鸡问题答案

百鸡问题答案

百鸡问题答案【篇一:百鸡问题】,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。

凡百钱买鸡百只,问鸡翁、母、鶵各几何?答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。

又答:鸡翁八,值钱四十;鸡母十一,值钱三十三,鸡鶵八十一,值钱二十七。

又答:鸡翁十二,值钱六十;鸡母四、值钱十二;鸡鶵八十四,值钱二十八。

”原书说明这个问题流传很广,解法很多,但从现代数学观点来看,实际上是一个求不定方程整数解的问题。

解法如下:设公鸡、母鸡、小鸡分别为x、y、z 只,由题意得:①……x+y+z =100②……5x+3y+(1/3)z =100x =12;y =4;z =84c语言解法#include stdio.hvoid main(){int cocks=0,hens,chicks;while(cocks=20){: k s; q# s1 m4 nhens=0;while(hens=33){( e2 n/ \) `9 t% e* f( r6 xchicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0==100.0)1 t0 g4 {+ e c: h9 n/a8 y printf(公鸡%d只,母鸡%d只,小鸡%d只\n\n,cocks,hens,chicks); hens++;}cocks++;}}输出结果为:公鸡0只,母鸡25只,小鸡75只公鸡4只,母鸡18只,小鸡78只公鸡8只,母鸡11只,小鸡81只公鸡12只,母鸡4只,小鸡84只java语言解法public class baijiwenti4 c. m0 i k! }/ m/ n z{0 t4 j8 f0 q n: j: z4 b; ipublic static void main (string [] args)+ b6 t s2 i/ e c: c{for (int x = 0; x = 19; x++){2 z) l8 q% x% @( s$ sfor (int y = 0; y = 33; y++)7 h6 r5 ^ w# t9 l{, b7 d4 q7 `) z2 k i% n7 [int z = 100 - x - y;if((x * 5 + y * 3 + z / 3 == 100 ) z % 3 == 0){# h1 q. t( j/ s y/ r, ssystem.out.println(可买鸡翁只数: + x);system.out.println(可买鸡母只数: + y);system.out.println(可买鸡雏只数: + z);/ r8 f+ ? b4 ? q4 | r}/ c$ u/ w7 k8 {+ h7 d}}}}【篇二:著名数学难题赏析-百钱百鸡】p class=txt>数学教研组(共两课时120分钟)我国古代数学书《张邱建算经》中有如下问题,也就是著名的百鸡百钱问题。

百钱百鸡问题教学设计

百钱百鸡问题教学设计

百钱百鸡问题教学设计百钱百鸡问题是源于中国古代数学的问题,旨在教会学生解决实际问题。

以下是一个可能的教学设计:1. 课程介绍:让学生了解问题的基本概念,解释百钱百鸡是关于计算用最少的钱购买最多数量的小鸡问题。

老师可以通过简单示例讲解问题的难点,比如买3只鸡要花多少钱?如果一只鸡要3块钱,那么买3只鸡要花多少钱?2. 问题解析:解释这个问题的主要难点在于涉及到整数运算的加法和乘法概念。

让学生理解加法是相加两个或更多数字的概念,而乘法则是重复相加相同数字的简便方法。

强调如何使用这两个概念解决这类问题。

3. 分析案例:提供一些简单的例子,让同学们自己练习计算。

例如:“用100元可以买多少只鸡?”和“每只鸡需要花费5元,那么用100元能买到多少只鸡?”以此类推,直到学生们能够自行解答此问题。

4. 组织讨论:让学生们在小组内部讨论,找出解题的方法。

小组之间分享答案和过程,鼓励学生之间的交流和合作。

5. 实践操作:老师分配任务,让学生们独立完成几道不同难度的问题。

每个同学可以根据自己的水平选择适当的问题,同时也能考验他们的逻辑思维和解决问题的能力。

6. 反馈与总结:请同学分享自己的解决方案,并分析正确的答案。

让学生分析不同的解题方法,探索最简捷的方法。

也可以提出一些扩展题目,以强化学生的数学技能。

通过上述教学设计,希望学生能够掌握加法和乘法的基本概念,培养数学思维,并能够解决百钱百鸡等问题。

同时,老师也可以灵活运用其他类似问题,使学生更加熟悉这些问题。

这种方法不仅可以提高学生们的数学能力,还可以让他们学会如何解决日常生活中的实际问题。

第十五节拓展资源-百钱百鸡和百元百畜解答比较

第十五节拓展资源-百钱百鸡和百元百畜解答比较

“百钱百鸡问题”和“百元百畜问题”解答比较张丘建是我国南北朝时期著名的数学家,他于公元5-6世纪所著的《张丘建算经》是后世通称的算经十书之一。

书中最后一个问题就是流传至今的“百钱百鸡”问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。

凡百钱买鸡百只,问鸡翁、母、雏各几何?用现在的语言解解释就是:公鸡每只值五文钱,母鸡每只值三文钱,小鸡每三只值一文钱。

现在用一百文钱买一百只鸡,问:一百只鸡中,公鸡、母鸡、小鸡各有多少只?该问题之所以饮誉海内外,是因为它导致了三元不定方程组,而张丘建是世界上第一个给出一题多解的人,他解算“百钱百鸡”问题的方法也是当时世界上最简捷先进的。

书中只有15个字的解法:“鸡翁每增四,鸡母每减七,鸡雏每益三,即得”。

原来张丘建是这样解答的,设公鸡、母鸡、小鸡各有x、y、z只,显然它们都是正整数,则根据题意,可得方程组先把x看成常数,这样可得为了得到整数解,令x=4t,可得一组解:x=4t, y=25-7t, z=75+3t,由于y=25-7t 中对t的限制,t只能取1,2,3三个值,可得三组解:公鸡有4只,母鸡18只,小鸡78只;公鸡有8只,母鸡11只,小鸡81只;公鸡有12只,母鸡4只,小鸡84只。

从这个结果就可看出张丘建“鸡翁每增四,鸡母每减七,鸡雏每益三”的解答奥妙。

无独有偶,瑞士著名数学家欧拉也曾研究过类似的问题。

这是因为欧拉非常重视方程,他写的《代数学原理》有许多关于方程的重要论述。

下面就是欧拉所出的一道“百元百畜”问题:某人用100元买了猪、山羊和绵羊共100只,其中猪7/2元一只,山羊4/3元一只,绵羊1/2元一只,问各买了多少只?这个问题与“百钱百鸡问题”极为相似,但晚了一千多年。

欧拉采用了“盲人法则”解答此题,这个“盲人法则”与张丘建解“百钱百鸡问题”的方法也很相似,现介绍如下:设猪、山羊和绵羊的数目分别是x,y,z,显然它们都是正整数,可得方程组:把x暂时看作常数移到符号右端,可得关于y和z的方程组:令x=5t,则x=5t, y=60-18t, z=40+13t,由于y=60-18t中对t的限制,t只能取1,2,3三个值,可得三组解:猪有5只,山羊有42只,绵羊53只;猪有10只,山羊有24只,绵羊66只;猪有15只,山羊有6只,绵羊79只。

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

百钱买百鸡这个题目是一个著名的数学难题,它要求用一百个钱币购买一百只鸡,其中公鸡x只,母鸡y只,小鸡z只,且x+y+z=100,且5x+3y+z/3=100。

使用现代计算机技术的优势,可以通过暴力穷举来解决这个问题。

小朋友也可以在Scratch编程中,通过引入变量和穷举法来实现这一过程。

首先,设置三个变量x、y和z,它们分别代表公鸡、母鸡和小鸡的数量。

设置一个计数器,用于显示穷举的执行时间。

然后,开始穷举。

从x的最小值开始,即0,依次增加到最大值,即100/5,检查是否满足x+y+z=100。

如果满足,继续检查是否满足5x+3y+z/3=100。

如果都满足,则表示找到了一个解。

在穷举过程中,可以使用计时器显示穷举的执行时间,以便学生了解求解过程的耗时情况。

最后,输出找到的所有解,包括公鸡、母鸡和小鸡的数量。

这些解可能有四种情况:公鸡0只,母鸡25只,小鸡75只;公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只。

通过这种方式,可以使用Scratch编程解决这个数学难题,并且通过计时器显示执行时间,了解求解过程的耗时情况。

相关文档
最新文档