Chloe· 发表于 2020-4-7 15:46:02

老鼠打洞

求助这个不使用幂运算应该怎么做呢,对两只老鼠没有打完一天的量就碰面的情况有点没有思路

dlnb526 发表于 2020-4-7 15:51:37

递归。
学习汉诺塔那一节就可以做了

BngThea 发表于 2020-4-7 16:13:59

width=int(input('输入厚度值:'))
br,sr=1,1
sbr,ssr=0,0
dist,tmp=0,0
day=0
while True:
    if dist >= width:
      print('需要%d天相遇'%day)
      bd = sbr-br/2 #相遇前一天大老鼠走的距离
      sd = ssr-sr*2 #相遇前一天小老鼠走的距离
      br_dist=bd+br/((4*sr)+br)*(width - tmp) # 相遇当天大鼠行进距离
      sr_dist=sd+4*sr/((4*sr)+br)*(width - tmp) #相遇当天小鼠行进距离
      print('大鼠行进距离为%.1f,小鼠行进距离为%.1f'%(br_dist,sr_dist))
      break
    tmp = dist# 记录上轮循环打了的距离
    # 本轮进展:
    sbr += br # 大老鼠行进距离
    ssr += sr # 小老鼠行进距离
    dist = sbr+ssr# 本轮结束后打的距离
    br,sr =br*2,sr/2 # 下一轮可以打的距离
    day += 1

编程鱼C 发表于 2020-4-7 16:35:08

汉诺塔

wp231957 发表于 2020-4-7 16:40:18

dlnb526 发表于 2020-4-7 15:51
递归。
学习汉诺塔那一节就可以做了

这东西,最终结果能是整数吗,精确到时?分?

墨羽岚 发表于 2020-4-7 17:10:31

wp231957 发表于 2020-4-7 16:40
这东西,最终结果能是整数吗,精确到时?分?

输出格式里说了天数是整数(应该是向上取整){:10_260:}

sunrise085 发表于 2020-4-7 17:25:11

import datetime
length=int(input("请输入墙的厚度:"))
o_mouse,o_len=1,0
y_mouse,y_len=1,0
days=0
while True:
    days+=1
    if length>(o_mouse+y_mouse): #完整打一天没打穿
      o_len+=o_mouse
      y_len+=y_mouse
    else:                        #最后一天,没打够一整天就打穿了
      o_len+=o_mouse*length/(o_mouse+y_mouse)
      y_len+=y_mouse*length/(o_mouse+y_mouse)
      break
    length-=(o_mouse+y_mouse)
    o_mouse*=2
    y_mouse/=2
print("天数:%d"%days)
print("old=%f,young=%f"%(o_len,y_len))
页: [1]
查看完整版本: 老鼠打洞