少儿编程机器人体验中心
苏老师:13556241583
君老师:15815465559
小课开始啦

李白沽酒

网址:http://www.gotomake.cn浏览数:24 
文章附图

同学们,今天我们继续学习使用Scratch解决数学难题,下面有一道古代算题,出自清代《增减算法统宗》,我们先来看一下:

李白沽酒探亲朋,

路途迢迢有四程,

行至一程多一倍,

却被书童喝六升,

行到亲朋家里面,

半点全无在酒瓶,

借问高朋能算士,

几何原酒要分明.

这道古题的大概意思是:

诗人李白买了酒去看望亲朋好友,路途很遥远分四段才能走到,每走一段路程,就在路边酒馆中按酒瓶中的酒量向酒瓶中添加一倍的酒,但是每次添加完缺被随从的小书童偷偷喝掉6升(书童的酒量也这么大?),当李白来到亲朋家里的时候,却发现酒瓶是空的,请问瓶中原来是多少酒呢?

我们先用方程式来解决这个问题:

假设原来瓶内的酒量为x升,第一程酒量添一倍以后就有酒2x升;“却被书童喝六升”后,酒量就只有(2x-6)升了。

因“路途遥远有四程”,所以每程走完都会重复上面的过程(添加剩余酒的一倍,然后书童喝掉6升),当走到朋友家时,“半点全无空酒瓶”,故可布列方程为:{[(2x-6)×2-6]×2-6}×2-6=0。

我们求解这一方程,得X=5.625,即酒瓶内原来有酒5.625升。

那么怎么用Scratch来解决这个问题呢?

首先我们用反推法来重新解决这个问题,假设时间可以倒流(就像电影回放一样),让李白从亲朋好友家中倒着走回去,让书童由喝酒6升变成加酒6升,同时添酒一倍变成减酒一半,那么最后酒瓶中剩余的酒是“0”,上一次休息“添加酒”前酒瓶中剩余的酒就是:(0+6)除以2(把偷喝的6升酒还回去,然后把添加的一倍酒拿掉),这个过程经过4次迭代,就可以算出瓶中有多少酒了。

根据这个算法,我们编写程序求解,程序如下:

“哇!这么简单?我算了好久呢”

这算啥,如果题目再难一点,小K算的会更有优势,比如现在路程变的更远了,不是4程了,是400程,也就是要添酒和偷喝酒400次了,用方程式来算算看!

!!! !!! !!!!你在耍我!!!!

但是小K用1秒时间就可以算出来:

我们设定了规则,把循环次数由4次改为400次,立刻就算出了结果。

同学们,学习编程是不是非常有用呢?


会员登录
登录
留言
回到顶部