同学们,今天我们继续学习使用Scratch解决数学难题,下面有一道古代算题,出自清代《增减算法统宗》,我们先来看一下:
李白沽酒探亲朋,
路途迢迢有四程,
行至一程多一倍,
却被书童喝六升,
行到亲朋家里面,
半点全无在酒瓶,
借问高朋能算士,
几何原酒要分明.
这道古题的大概意思是:
诗人李白买了酒去看望亲朋好友,路途很遥远分四段才能走到,每走一段路程,就在路边酒馆中按酒瓶中的酒量向酒瓶中添加一倍的酒,但是每次添加完缺被随从的小书童偷偷喝掉6升(书童的酒量也这么大?),当李白来到亲朋家里的时候,却发现酒瓶是空的,请问瓶中原来是多少酒呢?
我们先用方程式来解决这个问题:
假设原来瓶内的酒量为x升,第一程酒量添一倍以后就有酒2x升;“却被书童喝六升”后,酒量就只有(2x-6)升了。
因“路途遥远有四程”,所以每程走完都会重复上面的过程(添加剩余酒的一倍,然后书童喝掉6升),当走到朋友家时,“半点全无空酒瓶”,故可布列方程为:{[(2x-6)×2-6]×2-6}×2-6=0。
我们求解这一方程,得X=5.625,即酒瓶内原来有酒5.625升。
首先我们用反推法来重新解决这个问题,假设时间可以倒流(就像电影回放一样),让李白从亲朋好友家中倒着走回去,让书童由喝酒6升变成加酒6升,同时添酒一倍变成减酒一半,那么最后酒瓶中剩余的酒是“0”,上一次休息“添加酒”前酒瓶中剩余的酒就是:(0+6)除以2(把偷喝的6升酒还回去,然后把添加的一倍酒拿掉),这个过程经过4次迭代,就可以算出瓶中有多少酒了。
根据这个算法,我们编写程序求解,程序如下:
“哇!这么简单?我算了好久呢”
这算啥,如果题目再难一点,小K算的会更有优势,比如现在路程变的更远了,不是4程了,是400程,也就是要添酒和偷喝酒400次了,用方程式来算算看!
!!! !!! !!!!你在耍我!!!!
但是小K用1秒时间就可以算出来:
我们设定了规则,把循环次数由4次改为400次,立刻就算出了结果。
同学们,学习编程是不是非常有用呢?