鱼C论坛

 找回密码
 立即注册
查看: 904|回复: 6

[已解决]老鼠打洞

[复制链接]
发表于 2020-4-7 15:46:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助这个不使用幂运算应该怎么做呢,对两只老鼠没有打完一天的量就碰面的情况有点没有思路
最佳答案
2020-4-7 16:13:59
  1. width=int(input('输入厚度值:'))
  2. br,sr=1,1
  3. sbr,ssr=0,0
  4. dist,tmp=0,0
  5. day=0
  6. while True:
  7.     if dist >= width:
  8.         print('需要%d天相遇'%day)
  9.         bd = sbr-br/2 #相遇前一天大老鼠走的距离
  10.         sd = ssr-sr*2 #相遇前一天小老鼠走的距离
  11.         br_dist=bd+br/((4*sr)+br)*(width - tmp) # 相遇当天大鼠行进距离
  12.         sr_dist=sd+4*sr/((4*sr)+br)*(width - tmp) #相遇当天小鼠行进距离
  13.         print('大鼠行进距离为%.1f,小鼠行进距离为%.1f'%(br_dist,sr_dist))
  14.         break
  15.     tmp = dist  # 记录上轮循环打了的距离
  16.     # 本轮进展:
  17.     sbr += br # 大老鼠行进距离
  18.     ssr += sr # 小老鼠行进距离
  19.     dist = sbr+ssr  # 本轮结束后打的距离
  20.     br,sr =br*2,sr/2 # 下一轮可以打的距离
  21.     day += 1
复制代码
QQ截图20200406235254.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-7 15:51:37 | 显示全部楼层
递归。
学习汉诺塔那一节就可以做了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 16:13:59 | 显示全部楼层    本楼为最佳答案   
  1. width=int(input('输入厚度值:'))
  2. br,sr=1,1
  3. sbr,ssr=0,0
  4. dist,tmp=0,0
  5. day=0
  6. while True:
  7.     if dist >= width:
  8.         print('需要%d天相遇'%day)
  9.         bd = sbr-br/2 #相遇前一天大老鼠走的距离
  10.         sd = ssr-sr*2 #相遇前一天小老鼠走的距离
  11.         br_dist=bd+br/((4*sr)+br)*(width - tmp) # 相遇当天大鼠行进距离
  12.         sr_dist=sd+4*sr/((4*sr)+br)*(width - tmp) #相遇当天小鼠行进距离
  13.         print('大鼠行进距离为%.1f,小鼠行进距离为%.1f'%(br_dist,sr_dist))
  14.         break
  15.     tmp = dist  # 记录上轮循环打了的距离
  16.     # 本轮进展:
  17.     sbr += br # 大老鼠行进距离
  18.     ssr += sr # 小老鼠行进距离
  19.     dist = sbr+ssr  # 本轮结束后打的距离
  20.     br,sr =br*2,sr/2 # 下一轮可以打的距离
  21.     day += 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 16:35:08 | 显示全部楼层
汉诺塔
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 16:40:18 From FishC Mobile | 显示全部楼层
dlnb526 发表于 2020-4-7 15:51
递归。
学习汉诺塔那一节就可以做了

这东西,最终结果能是整数吗,精确到时?分?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 17:10:31 | 显示全部楼层
wp231957 发表于 2020-4-7 16:40
这东西,最终结果能是整数吗,精确到时?分?

输出格式里说了天数是整数(应该是向上取整)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 17:25:11 | 显示全部楼层
  1. import datetime
  2. length=int(input("请输入墙的厚度:"))
  3. o_mouse,o_len=1,0
  4. y_mouse,y_len=1,0
  5. days=0
  6. while True:
  7.     days+=1
  8.     if length>(o_mouse+y_mouse): #完整打一天没打穿
  9.         o_len+=o_mouse
  10.         y_len+=y_mouse
  11.     else:                        #最后一天,没打够一整天就打穿了
  12.         o_len+=o_mouse*length/(o_mouse+y_mouse)
  13.         y_len+=y_mouse*length/(o_mouse+y_mouse)
  14.         break
  15.     length-=(o_mouse+y_mouse)
  16.     o_mouse*=2
  17.     y_mouse/=2
  18. print("天数:%d"%days)
  19. print("old=%f,young=%f"%(o_len,y_len))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 14:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表