编程一小时第二日(3月10日):解决数学问题

数学对编程来说很重要的,同时也可以用编程来解决数学问题。你想到什么数学问题?画多边形,画奇奇怪怪但非常美妙的各类线条?是的,他们非常漂亮!可是那些画图形的操作尝试一下即可,今天我们将用scratch编程来解小学奥数“鸡兔同笼”问题。

我们先回顾下题目:

大约在1500年前 ,《孙子算经》中记载了这样一个有趣问题:

今有雉兔同笼,

上有三十五头,

下有九十四足,

问雉兔各几何?

这四句话的意思是:有若干只鸡和兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?

01  古法——砍足法

孙子的解法:孙子提出了大胆的设想,他假设砍去每只鸡、每只兔一半的脚,则每只鸡就变成了“独脚鸡”,每只兔就变成了“双脚兔”。这样,“独脚鸡”和“双脚兔”的脚就由94只变成了47只;而每只“鸡”的头数与脚数之比变为1:1,每只“兔”的头数与脚数之比是1:2.由此可知,有一只“双脚兔”,脚的数量就会比头的数量多1。所以“独脚鸡”和“双脚兔”脚的数量与他们头的数量之差,就是兔子的只数。

翻译成算术方法就是:

兔数(94÷2)-35=12(只)

鸡数35-12=23 (只)

这一思路被称为“砍足法”,这种思维方法也叫化归法,化归法就是在解决问题时,先不对问题采取直接的分析,而是将题中的条件或问题进行变形,使之转化,直到最终把它归成某个已经解决的问题。

02  假设法

如果是适合小学三四年级的假设法,思路过程分析:

假设这35头全是鸡,那么,脚应是2×35=70(只),比实际少94-70=24(只)脚。

这是因为1只兔有4只脚,把它看成是2只脚的鸡了,每只兔少算了2只脚,共少算了24只脚,24里面有几个2,就是几只兔。

解:兔数 (94-2×35)÷(4-2)=24÷2=12(只)

    鸡数35-12=23(只)

也可以假设35只全是兔,解答如下:

解:鸡数(4×35-94)÷(4-2)=46÷2=23(只)

    兔数35-23=12(只)

03  列方程法

假设鸡有x只,兔有y只,列二元一次方程组

x + y=35

2x+4y=94

可以很快解出来x=23,y=12

04  画图和列表法

也就是穷举法(也称“枚举法”“列举法”)。从1开始穷举鸡的数量,那么兔的数量就是总的头数减去鸡的数量,计算并判断当前情况下脚的数量是否与之吻合,如果吻合则表示找到解。



用编程解决“鸡兔同笼”问题:

是的,正如你看到的,我已经给出了以上四种数学的解法,你能用编程(scratch)来编译这四种方法吗?或者你有自己的独特解法吗,你能完成几种解法?来吧,打开你的scratch……。我想告诉你的是,本题的用意是能用最后一种方法:穷举法(也称“枚举法”“列举法”),来解决“鸡兔同笼”问题。

你可能感兴趣的:(编程一小时第二日(3月10日):解决数学问题)