《九章算术》的“盈不足篇”里有一个很有意思的老鼠打动问题,原文书这么说的今有垣厚十尺,两鼠对穿,大鼠日亦尺,大鼠日子倍,小鼠日子半,问何日相逢,个穿几何?,求编程求此提的解,要求使用循环来完成,不允使

《九章算术》的“盈不足篇”里有一个很有意思的老鼠打动问题,原文书这么说的今有垣厚十尺,两鼠对穿,大鼠日亦尺,大鼠日子倍,小鼠日子半,问何日相逢,个穿几何?,求编程求此提的解,要求使用循环来完成,不允使

****

该回答引用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)

img