08.15客有幾人

婦人洗碗在河濱,試問家中客幾人

 答曰不知人數目,六十五碗自分明

 二人共食一碗飯,三人共吃一碗羹

 四人共肉無餘數,請君細算客幾人

 聰明的你,
知道
客人有多少嗎?
有幾桌?
每桌幾人?

@@@@@

妇人洗碗

题目要求:一个妇人在河边洗碗,邻居问:你家里来了多少客人?要用多少碗?

她回答:客人每两位合用1只饭碗,每三位合用1只汤碗,每四位合用1只菜碗,共用了65只碗。她家里究竟来了多少客人?

首先如果我们用小学数学知识去解答这个问题:

这是一个求公倍数的问题,假设妇人家中摆放了很多餐桌,每个餐桌都按照题目中要求的比例为客人配置碗(不能多也不能少),那么我们需要计算就是求2、3、4 的公倍数。 它们公倍数是12,也就是每个餐桌上有12个人,那么在这个餐桌上有饭碗6个(12/2),汤碗4个(12/3),菜碗3个(12/4),合计13个碗。 因为妇人一共洗了65个碗,65是13的5倍,所以妇人家中一共摆了5个餐桌,而每个餐桌12人,所以客人就是12的5倍,为60人!

那么如何通过Scratch来解决这个问题呢? 今天我们尝试穷举法来解代数题,假设妇人家中来了X个客人,那么碗的数量就是:X/2+X/3+X/4=65,我们用Scratch来解决它:

file

“哇!算的好快呀!” 想一想,我们是不是可以优化下这个程序?

file

思考一下:为什么变量X初始值可以设定为12,并且每次循环增加12也可以呢?


提供兩種算法

  (一)(孫子算經解法)

   假設有X人,由題意得

   1/2*X+1/3*X+1/4*X=65

   X=65/(1/2+1/3+1/4)=60

  (二)(張邱建算經解法)

   (65*2*3*4)/[(2*3)+(3*4)+(4*2)]=60



问题描述

妇人洗碗在河滨,试问家中客几人?

答曰不知人数目,六十五碗自分明。

二人共餐一碗饭,三人共吃一碗羹。

四人共肉无余数,请君布算莫差争。

 

   这是出自清代数学家梅瑴成《增删算法统宗》书中的一道算题,,它的意思是说:

   一个妇人在河边洗碗,有人问她家中来了几个客人?妇人回答不知客人数,但是知道一共用了65只碗。平均2人共用一个饭碗,3人共喝一碗汤,4人共吃一碗肉。请你算算就知道有多少客人?

 

编程思路

   根据题意,设有客人x个,则可得如下等式:

   采用枚举法,从1开始列举客人的数量,并将其代入上述等式。如果等式成立,则找到该问题的解。

 

程序清单

   根据上面介绍的算法,编写程序求解答案。

   运行该模块程序,得到答案:有客人60人。

 

试一试

   雯雯收藏的文史类图书占其藏书总数的35%,科技类图书占25%,文史类图书比科技类图书多12册。请问雯雯一共收藏有多少册图书?

   编写程序求解这个问题。

Comments