老鼠打洞
求助这个不使用幂运算应该怎么做呢,对两只老鼠没有打完一天的量就碰面的情况有点没有思路递归。
学习汉诺塔那一节就可以做了 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 汉诺塔 dlnb526 发表于 2020-4-7 15:51
递归。
学习汉诺塔那一节就可以做了
这东西,最终结果能是整数吗,精确到时?分? wp231957 发表于 2020-4-7 16:40
这东西,最终结果能是整数吗,精确到时?分?
输出格式里说了天数是整数(应该是向上取整){:10_260:} 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]