百鸡百钱问题解题技巧
“百鸡问题”及其衍生问题

“百鸡问题”及其衍生问题作者:***来源:《中学数学杂志(初中版)》2021年第03期1 百鸡问题简介所谓百鸡问题,是指下面这道中国古代数学题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一.凡百钱,买鸡百只.问鸡翁、母、雏各几何?用现在的语言表述就是:公雞5元1只,母鸡3元1只,小鸡1元3只.用100元钱买100只鸡.问公鸡、母鸡、小鸡各买多少只?百鸡问题是《张丘建算经》中的最后一题.张邱建,北魏清河(今河北邢台市清河县)人,是公元5世纪著名的大数学家.《张丘建算经》成书于公元466年到公元485年之间,现传本有92个问题.该书在最大公约数与最小公倍数的计算、不定方程的求解以及等差数列相关问题的求解等方面,具有独到的见解.百鸡问题是《张邱建算经》中的一个世界著名的不定方程问题.该书给出了这个问题的三组解:(1)公鸡4只,母鸡18只,小鸡78只;(2)公鸡8只,母鸡11只,小鸡81只;(3)公鸡12只,母鸡4只,小鸡84只.自张邱建以后,中国数学家对百鸡问题的研究从来没有间断过,百鸡问题几乎成了不定方程的代名词,从宋代到清代围绕百鸡问题的数学研究取得了许多成就.百鸡问题不仅在中国几乎尽人皆知,而且在国外也有较大影响.2 百鸡问题的解法关于百鸡问题的解法,《张丘建算经》中只提到:“鸡翁每增四,鸡母每减七,鸡雏每益(增加)三,即得.”但他并没有给出更具体的解法.现在我们通过解不定方程的方法来求出这个问题的解.3 与百鸡问题相关的一些问题在《张丘建算经》之后,出现了许多与百鸡问题相类似的问题,其中有些问题是后人自行编拟出来的,而有些问题却有明显的改变痕迹.现在我们挑选出其中的几例,与读者共同分享.1.“百人搬砖”问题(选自《趣味歌词古体算题选》,作者:潘有发,台湾九章出版社1995年出版).百人搬百砖,男子一搬八,妇女一搬三,小孩三搬一.请问各几人,各搬几块砖?不准列方程,不准用比例,只许用心算,看谁算得快!参照百鸡问题的解法,运用不定方程当然可以求解这个问题,但题目要求我们“用心算”.根据已知条件我们可以进行如下分析:一个男人比一个女人多搬5块砖;三个女人比三个小孩多搬8块砖.因为人数和砖数都必须是正整数,所以,应该先从小孩算起,小孩的人数应该是3的倍数.假设小孩有90人(也可以设小孩有60人,75人,87人等,只要是3的倍数即可,然后再逐一否定),搬砖30块,那么剩下70块要由10人来搬.若这10人都是女人,则只能搬30块,此时剩下的40块砖无人搬.因为每个男人比每个女人多搬5块,所以,只要把其中的8个女人对换成男人,则剩下的40块砖恰好分给8个男人搬.所以,该问题的答案是:男人8人,每人搬8块砖,共搬砖64块;女人2人,每人搬3块砖,共搬砖6块;小孩90人,每3人搬1块砖,共搬砖30块.2.“千钱百鸡”问题(选自程大位原著,梅毂成编《增删算法统宗》).今有千文买百鸡,五十雄价不差池,草鸡每个三十足,小者十文三个知.用现在的语言表述就是:现有1000元钱去买100只鸡,公鸡每只50元,母鸡每只30元,小鸡3只10元.问公鸡、母鸡、小鸡各买多少只.这道题与百鸡问题没有本质区别,只是钱的总数与每种鸡的价钱都增加到原来的10倍.仿照百鸡问题,通过解不定方程可得三组解:公鸡4只,母鸡18只,小鸡78只;公鸡8只,母鸡11只,小鸡81只;公鸡12只,母鸡4只,小鸡84只.3.“百马百瓦”问题.一百匹马驮一百块瓦,大马驮三块瓦,小马驮两块瓦,两个马驹驮一块瓦.问大马、小马、马驹各几匹?五十多年前,笔者读小学时,先父就曾经给我出过这道题,但具体出处不太清楚.设大马x匹、小马y匹、马驹z匹,根据已知条件有方程组: x+y+z=100,3x+2y+12z=100.解这个不定方程可得下面6组解:4.“和尚几人”问题(选自程大位《算法统宗》).一百馒头一百僧,大僧三个更无争.小僧三人分一个,大小和尚各几丁.“和尚几人”问题比百鸡问题少了一个条件,从而使得其解法也简单许多.通过求解一个一元二次方程,就可以很容易地求出答案来.程大位在《算法统宗》中曾经给出一个不用方程的漂亮解法.其解法如下:因为1个大和尚吃3个馒头,3个小和尚吃1个馒头,所以,1个大和尚和3个小和尚共吃4个馒头.把1个大和尚和3个小和尚看成一组,100个和尚共分为25组.由于每组有1个大和尚和3个小和尚,因此25组有25个大和尚,75个小和尚.5.“百钱买百牛”问题.据传,清代嘉庆皇帝曾仿照“百鸡问题”编了一道“百牛问题”给大臣们做:有银百两,买牛百头,大牛一头十两,小牛一头五两,牛犊一头半两.问大牛、小牛和牛犊各买多少头?答案:买大牛1头,小牛9头,牛犊90头.6.“几人吃饭”问题.在马克思的《数学手稿》中有一个与百鸡问题类似的问题,就是下面这个“几人吃饭”问题:有30个人,其中有男人、女人和小孩,在一家小饭馆吃饭花了50先令.每个男人花3先令,每个女人花2先令,每个小孩花1先令.问男人、女人和小孩各多少人?仿照百鸡问题,通过解不定方程可得下面9组解:观察上面的“百鸡问题”“千钱百鸡问题”“百马百瓦问题”和“几人吃饭问题”的答案不难发现,在每一个问题的所有答案中,x的值所构成的数列是一个等差数列;同样,y的值所构成的数列和z值所构成的数列也都是一个等差数列.与百鸡问题相关的问题,当然不止上面所罗列的这些.要想进一步了解更多的问题,读者可以查阅相关的资料;如果有兴趣,也可以自行编拟一些与之相关的问题.不论是自行求解,还是在课余时间与朋友交流、探讨,都是一件很有意义的事情.参考文献[1]徐品方,徐伟.古算诗题探源[M].北京:科学出版社,2008.9作者简介司志本(1959—),男,河北兴隆人,教授.曾被授予河北省优秀教师,获国家曾宪梓教育基金会教师奖;有170余篇数学论文发表.。
多种解法求百钱百鸡问题

学号: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.结束,程序输出结果后退出。
“百鸡问题”的简单解法

“百鸡问题”的简单解法“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
凡百钱买鸡百只。
问鸡翁母雏各几何?”翻译过来是: 1只公鸡值 5 文钱,1只母鸡值3文钱,3只小鸡才值1文钱。
现在用100文钱买100只鸡,问公鸡、母鸡、小鸡各有多少只?这就是我国古代数学名著《张丘建算经》里的一个题目,也被称为有趣的“百鸡问题”。
谈到“百鸡问题”,就要说一说我国古代数学家张丘建小时候的故事。
“相传在南北朝时期(公元 386 年——公元 589 年),我国北方出了一个“神童”,他反映敏捷,计算能力超群,许多连大人一时也难以解答的问题,他一下子就给算出来了。
远近的人都喜欢找他计算数学问题。
“神童”的名气越来越大,传到当时宰相的耳中。
有一天,宰相为了弄清“神童”是真是假,特地把“神童”的父亲叫了去,给了他 100 文钱,让第二天带 100 只鸡来。
并规定 100 只鸡中公鸡、母鸡和小鸡都要有,而且不准多,也不准少,一定要刚好百钱百鸡。
当时,买 1 只公鸡 5 文钱,买 1 只母鸡 3 文钱,买 3 只小鸡才 1 文钱。
怎样才能凑成百钱百鸡呢?“神童”想了一会,告诉父亲说,只要送 4 只公鸡、 18 只母鸡和 78 只小鸡就行了。
第二天,宰相见到送来的鸡正好满足百钱百鸡,大为惊奇。
他想了一下,又给了 100 文钱,让明天再送 100 只鸡来,还规定不准只有 4 只公鸡。
这个问题也没有难住“神童”。
他想了一会,叫父亲送 8 只公鸡、 11 只母鸡和 81 只小鸡去。
还告诉父亲说,遇到类似问题,只要怎样怎样就行了。
第二天,宰相见到了送来的 100 只鸡,赞叹不已。
他又给了 100 文钱,要求下次再送 100 只鸡来。
岂料才一会儿,“神童”的父亲就送来了 100 只鸡。
宰相一数:公鸡 12 只、母鸡 4 只、小鸡 84 只,正好又满足百钱百鸡。
”这个“神童”就是张丘建,后来经过自己的勤奋学习,成为一个著名的数学家。
那么张丘建是怎样算出这三种结果的呢?此题用“鸡兔同笼”的假设法,确实有些复杂,但也能解得出。
百钱买百鸡解题思路数学

百钱买百鸡这个题目是一个著名的数学难题,它要求用一百个钱币购买一百只鸡,其中公鸡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编程解决这个数学难题,并且通过计时器显示执行时间,了解求解过程的耗时情况。
例9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡

例 9-8 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只 5 钱、母鸡一只 3 钱,小鸡一钱 3 只,问一百只鸡中公鸡、母鸡、小鸡各多少)。
4.1 z=1 4.2 是否满足百钱,百鸡
4.2.1 满足,输出最终百钱买到的百鸡的结果 4.2.2 不满足,不做处理 4.3 变量增加,这里注意步长为 3 流程图
版权所有:东北大学计算中心
开始 定义x,y,z
x<=20?
N
Y N
y<=33?
Y
N
z<=99?
Y
百钱和百鸡?
N
Y
输出百鸡 的结果
结束
图 5-8 程序执行流程图
版权所有:东北大学计算中心
这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为 x,y,z,问题化为三 元一次方程组:
5x 3y z / 3 100(百钱)
x
y
ห้องสมุดไป่ตู้
z
100(百鸡)
这里 x,y,z 为正整数,且 z 是 3 的倍数;由于鸡和钱的总数都是 100,可以确定 x,y,z 的取值范围:
1) x 的取值范围为 1~20 2) y 的取值范围为 1~33 3) z 的取值范围为 3~99,步长为 3 对于这个问题我们可以用穷举的方法,遍历 x,y,z 的所有可能组合,最后得到问题的解。 数据要求 问题中的常量: 无 问题的输入: 无 问题的输出: int x,y,z /*公鸡、母鸡、小鸡的只数*/ 初始算法 1.初始化为 1; 2.计算 x 循环,找到公鸡的只数; 3.计算 y 循环,找到母鸡的只数; 4.计算 z 循环,找到小鸡的只数; 5.结束,程序输出结果后退出。 算法细化 算法的步骤 1 实际上是分散在程序之中的,由于用的是 for 循环,很方便的初始条件放 到了表达式之中了。 步骤 2 和 3 是按照步长 1 去寻找公鸡和母鸡的个数。 步骤 4 的细化
百钱百鸡问题

百鸡问题
公元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只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。
问各能买多少只?想:把三种鸡的只数分别设为未知数x、y、z,然后利用总只数、总钱数两个条件,列出两个方程,根据鸡的只数必须取整数的要求,一步一步推出各种鸡的只数。
解:设大公鸡x只,母鸡y只,小鸡z只。
根据题意,得把③式代入①式z+y+6x+3y=100得 x2=8y3=18把x、y的解代入③式得答:买大公鸡12只,母鸡4只,小鸡84只;或买大公鸡8只,母鸡11只,小鸡81只;或买大公鸡4只,母鸡18只,小鸡78只。
九章算术中的十大经典问题

九章算术中的十大经典问题九章算术是中国古代数学的重要著作之一,其内容涵盖了算术、代数、几何等多个领域,对中国古代数学的发展产生了深远的影响。
其中,九章算术中的十大经典问题是中国古代数学中的经典之作,这些问题不仅在古代有着广泛的应用,而且在现代数学中也有着重要的地位。
本文将对九章算术中的十大经典问题进行详细的介绍和分析。
一、两舍弃一“两舍弃一”是九章算术中的第一大问题,其内容为:“今有雉兔同笼,上有三十五头,下有九十四足。
问雉兔各几何?”这个问题的解法是:设雉有x只,兔有y只,则有两个方程式:x+y=35,2x+4y=94。
通过解这两个方程式,可以得出雉有15只,兔有20只。
二、百钱买百鸡“百钱买百鸡”是九章算术中的第二大问题,其内容为:“鸡犬同笼,上有百头,下有百足。
问鸡几何?”这个问题的解法是:设鸡有x只,狗有y只,则有两个方程式:x+y=100,2x+4y=200。
通过解这两个方程式,可以得出鸡有50只,狗有50只。
三、五家渠“五家渠”是九章算术中的第三大问题,其内容为:“五家渠,田方百亩,一夫二亩,各自耕戍,相望而不相害,问可耕几何?”这个问题的解法是:设有x个人耕种,则有一个方程式:2x=100,解得x=50。
因此,五家渠可耕50亩。
四、举铁砣以十为斤,问几何?”这个问题的解法是:设铁砣重x斤,则有一个方程式:x/10=1,解得x=10。
因此,铁砣重10斤。
五、买麻布“买麻布”是九章算术中的第五大问题,其内容为:“买麻布,五丈余,割去一丈五尺,问剩几何?”这个问题的解法很简单,直接用五丈减去一丈五尺即可,即五丈减一丈五尺等于三丈五尺。
六、三斗鸡“三斗鸡”是九章算术中的第六大问题,其内容为:“三斗鸡,五方雉,七十二子,问鸡、雉、子各几何?”这个问题的解法是:设鸡有x只,雉有y只,子有z个,则有三个方程式:3x+5y+0.5z=72,x+y=8,z=72。
通过解这三个方程式,可以得出鸡有21只,雉有3只,子有72个。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
百鸡百钱问题解题技巧
百鸡百钱问题是一个经典的数学问题,它涉及到线性方程组的求解。
在这个问题中,有100只鸡和100元钱,公鸡5元一只,母鸡3元一只,小鸡1元三只。
我们需要找出公鸡、母鸡和小鸡各有多少只,使得总价值等于总数量。
解题技巧如下:
1、设公鸡、母鸡和小鸡的数量分别为x、y 和z 只。
2、根据题目条件,我们可以建立以下方程:
x + y + z = 100 (总数量)
5x + 3y + z/3 = 100 (总价值)
3、解这个方程组,找出x、y 和z 的值。
4、由于z 是3的倍数,我们可以先从z 入手,解出z 的值。
5、将z 的值代入方程组中,解出x 和y 的值。
6、最后,验证解的合理性,确保x、y 和z 都是非负整数。
通过以上步骤,我们可以求解百鸡百钱问题。
需要注意的是,由于这是一个线性方程组问题,解可能有多个,因此需要验证解的合理性。