1 問題描述
《九章算術》的“盈不足篇”里有一個很有意思的老鼠打洞問題。原文這么說的:
今有垣厚十尺,兩鼠對穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。問:何日相逢?各穿幾何?
這道題的意思就是說,有一堵十尺厚的牆,兩只老鼠從兩邊向中間打洞。大老鼠第一天打一尺,小老鼠也是一尺。
大老鼠每天的打洞進度是前一天的一倍,小老鼠每天的進度是前一天的一半。問它們幾天可以相逢,相逢時各打了多少。
《九章算術》是中國古代數學專著,承先秦數學發展的源流,進入漢朝后又經許多學者的刪補才最后成書,這大約是公元一世紀的下半葉。它的出現,標志着中國古代數學體系的形成。
后世的數學家,大都是從《九章算術》開始學習和研究數學知識的。唐宋兩代都由國家明令規定為教科書。1084年由當時的北宋朝廷進行刊刻,這是世界上最早的印刷本數學書。
《九章算術》共收有246個數學問題,分為九章。分別是:方田、栗米、衰分、少廣、商功、均輸、盈不足、方程、勾股。
《九章算術》是世界上最早系統敘述了分數運算的著作;其中盈不足的算法更是一項令人驚奇的創造;“方程”章還在世界數學史上首次闡述了負數及其加減運算法則。
《九章算術》的出現,標志着我國古代數學體系的正式確立,當中有以下的一些特點:1.是一個應用數學體系,全書表述為應用問題集的形式;2.以算法為主要內容,全書以問、答、術構成,“術”是主要需闡述的內容;3.以算籌為工具。
《九章算術》取得了多方面的數學成就,包括:分數運算、比例問題、雙設法、一些面積、體積計算、一次方程組解法、負數概念的引入及負數加減法則、開平方、開立方、一般二次方程解法等。《九章算術》的思想方法對我國古代數學產生了巨大的影響。自隋唐之際,《九章算術》已傳入朝鮮、日本,現在更被譯成多種文字。作者:(漢)張蒼、耿壽昌、(魏)劉徽注
#2 解題思路
- 第一步: 重復循環,需要使用while True無限循環,到結果為10時結束循環
- 第二步: 最后算各打多少米時需要注意
#3 解題方法

all_big=all_small=big_mouse=small_mouse=1 x,day=10,0 while True: x-=(big_mouse+small_mouse) big_mouse*=2 small_mouse/=2 day+=1 if x<=0: print(day) break all_big+=big_mouse all_small+=small_mouse x=(10-all_big-all_small) all_big+=x*big_mouse/(big_mouse+small_mouse) all_small+=x*small_mouse/(big_mouse+small_mouse) print(f'大老鼠挖了{all_big}尺,小老鼠挖了{all_small}尺')
第1行: 定義變量all_big、all_small、big_mouse、small_mouse且都賦值為1,分別代表大老鼠總路程、小老鼠總路程、大老鼠單日路程、小老鼠單日路程
第2行: 定義變量x、day分別賦值10、0,分別代表總長度和天數
第3行: 無限循環直到遇到break結束循環
第4行: 求出總距離減去兩只老鼠一起挖洞的距離剩余的距離並重新賦值給x
第5-6行: 大老鼠速度乘二,小老鼠速度減半
第7行: 記錄天數
第8-10行: 如果總距離小於或等於0了,便輸出天數並結束循環
第11-12行: 計算兩只老鼠的總路程
第13行: 計算相遇前一天兩只老鼠剩余的路程
第14-15行: 通過兩只老鼠的速度計算兩只老鼠在最后的路程分別挖了多遠
第16行: 輸出兩只老鼠的總路程
代碼運行結果為: