前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二鼠打洞

二鼠打洞

作者头像
算法与编程之美
发布2023-09-18 19:09:07
2620
发布2023-09-18 19:09:07
举报

1 问题

有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。

‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

2 方法

输入1个整数,代表墙的厚度,单位为尺‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。第一行输出1个整数,表示相遇时所需的天数‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬。第二行输出2个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1位数字。Round(f,1)为浮点数f 保留一位小数。

代码语言:javascript
复制
n = int(input())
rat, mouse, day, time = 1, 1, 0, 1 #大老鼠进度,小老鼠进度,相遇时间,第一天时间
distance_of_rat, distance_of_mouse = 0, 0  # 大老鼠和小老鼠的打洞距离
while n > 0:
    if n - mouse - rat < 0: #第一天打洞完成
        time = n / (mouse + rat)    #算出需要时间
    n = n - mouse - rat    #剩余墙厚
    distance_of_mouse = distance_of_mouse + time * mouse
    distance_of_rat = distance_of_rat + time * rat
    rat = rat * 2    #大老鼠每天进度
    mouse = mouse / 2    #小老鼠每天进度
    day = day + 1    #时间过去一天
print(day)
print(round(distance_of_mouse, 1), round(distance_of_rat, 1))

3 结语

这是一道数学题,据题目描述,打洞的速度分为第一天和后几天,第一天统一一天一尺,那么在实现时也要区分只用一天就相遇,和需要好几天相遇。按照数学思路写出公式,变为程序语言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-29 00:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档