趣味數學——加油問題_風聞
壹零社-最新鲜的互联网产业资讯2021-11-10 17:22
文/陳新龍
在輔導學生競賽的時候看到一道比較有意思的題目:小明打算在“十一”假期騎摩托車自駕遊。摩托車每次加滿油後可以行駛100公里。小明在自家的附近的加油站加滿油就上路了,上路之後還要順序經過“1號-6號”六個加油站,每個加油站到上一個加油站距離分為50、80、39、60、40、32公里。由於“十一”期間加油站有很多車要加油,所以小明希望儘量減少加油次數同時順利到達目的地。那麼請問小明需要在哪些加油站停靠加油,才能使得沿途加油次數最少呢?
因為如果摩托車剩下的油不夠行駛到下一個加油站時,就必須要在這個加油站加油。結合Scratch編程思想一起來解決這道有趣的奧數題吧。
首先需要創建兩個列表。列表“距離”用來存放各個加油站之間的距離數值,將50、80、39、60、40、32公里數添加入列表中。
列表“停靠”存放六個元素,用於標記在哪個加油站停靠加油,默認“停靠”列表中6個元素初始值為0。當停靠某個站點時將對應值從0修改為1代表停靠此地加油。
根據題目的要求小明不必在所有站點加油。例如小明在第一個加油站加油,因為出發時油箱是滿的,可以行駛100公里,到達第一個目的地的時候,只能行駛50公里了,因為距離第二個加油站還有80公里,所以必須將油箱加滿才能繼續前行……
使用當油箱的油滿足到下一個加油站時就不加油的邏輯,計算出小明停靠加油的合理方案,使得加油次數最少。
新增加兩個變量“剩餘油量”(統計當前還可以行駛公里數,初始值為100)和變量“i”(列表中的序號,也可以理解成第幾個加油站,初始值為0)。
重複循環執行6次(列表“距離”的項目數)提取出“距離”列表中每一項的數值進行比較,如果“距離”列表中的任何一項的數字超出了100,那麼彈出提示“距離加油站超過100千米,摩托車無法正常行駛此路程”並且停止全部腳本。
如果剩餘的油量小於“距離”列表中當前的項數時,需要小明在第i號加油站停靠加油,並且在“停靠”列表中進行對應標記(對應初始值從0變為1),將剩餘油量重新設置為100,表示在此加油站將油加滿。
在行駛的過程中需要注意兩點:剩餘的油量是不斷地減少的(當前剩餘油量值減去距離的第i+1項的值),序號i是不斷的增加的(每次增加1),直至到達最終目的地。(圖1)
最終小明需要在1號、2號、4號加油站停靠加油,才能順利到達最終的目的地。
簡單的奧數題目結合有趣的Scratch編程摩擦出了不一樣的火花,那麼聰明的你是否解答出正確答案了嗎?(圖2)