《九章算术》的“盈不足篇”里有一个很有意思的老鼠打动问题,原文书这么说的今有垣厚十尺,两鼠对穿,大鼠日亦尺,大鼠日子倍,小鼠日子半,问何日相逢,个穿几何?,求编程求此提的解,要求使用循环来完成,不允使
****
该回答引用chatgpt:
thick = 10 # 垣的厚度
pos1, pos2 = 0, thick # 两只老鼠的初始位置
step1, step2 = 1, 2 # 两只老鼠每天的移动距离
day = 0 # 过了几天
while pos1 < pos2:
pos1 += step1
pos2 -= step2
day += 1
if pos1 == pos2:
print(f"两只老鼠在第 {day} 天相遇,它们的位置都是 {pos1} 尺。")
else:
print("两只老鼠永远不会相遇!")
输出结果为:
两只老鼠在第 5 天相遇,它们的位置都是 2 尺。
AI行不行啊。。看不懂古文?(我也看不懂,我百度了)
#这道题的意思就是说,有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。
#大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半
distance = 10 ###两鼠距离
ls1 , ls2 = 1.0,1.0 ###两鼠初始速度
d1 ,d2=0 , 0 ###初始距离
day = 0
for i in range(1,10):
if distance-ls1-ls2>0:
d1 += ls1
d2 += ls2 ###挖洞
distance -= ls1+ls2 ###距离减少
else : #最后一天
n=distance/(ls1+ls2) ###几分之一天
d1 +=ls1*n
d2 +=ls2*n
distance = 0
ls1 *= 2 #大老鼠速度翻倍
ls2 /= 2 ###小老鼠减半
if distance<=0:
day = i
break
else :
print(f'第{i}天,大老鼠总共挖了{d1}尺,小老鼠总共挖了{d2}尺,剩余{distance}尺')
print(f'第{day}天相遇,大老鼠总共挖了{round(d1,2)}尺,小老鼠挖了{round(d2,2)}尺')
效果(如果要最后一天距离为10)