题目描述
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
输入格式
一行两个正整数 s,v,分别代表路程和速度。
输出格式
输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。
输入输出样例
输入 #1复制
100 99
输出 #1复制
07:48
说明/提示
对于 100% 的数据,1≤s,v≤104。
import math # 导入 math 模块,用于数学计算(如向上取整)
# 读取用户输入并按空格分割成列表,然后将列表中的元素转换为浮点数
# 示例输入:"1000 50" → [1000.0, 50.0]
s, v = map(float, input().split())
# 计算总时间(单位:分钟)
# 路程时间:s / v(向上取整)
# 额外时间:10 分钟(垃圾分类)
t = math.ceil(s / v + 10) # 示例:1000 / 50 + 10 = 30 分钟
# 计算最晚出发时间(单位:分钟)
# 学校要求到达时间为 8:00(即 480 分钟)
last_come = 480 - t # 示例:480 - 30 = 450 分钟
# 如果最晚出发时间小于 0,表示需要前一天出发
if last_come < 0:
last_come += 1440 # 1440 分钟 = 24 小时
# 将最晚出发时间转换为小时和分钟
hours = int(last_come // 60) # 计算小时数(整除 60)
minutes = int(last_come % 60) # 计算剩余的分钟数(取余 60)
# 输出最晚出发时间,格式为 "HH:MM"(不足两位补零)
print(f"{hours:02d}:{minutes:02d}") # 示例输出:07:30
代码功能说明
-
输入处理:
-
使用
input().split()
读取用户输入并按空格分割成列表。 -
使用
map(float, ...)
将列表中的元素转换为浮点数。
-
-
总时间计算:
-
计算路程时间:
s / v
(向上取整)。 -
加上额外时间:10 分钟(垃圾分类)。
-
使用
math.ceil()
确保路程时间向上取整。
-
-
最晚出发时间计算:
-
学校要求到达时间为 8:00(即 480 分钟)。
-
最晚出发时间 = 480 - 总时间。
-
如果最晚出发时间小于 0,表示需要前一天出发,因此加上 1440 分钟(24 小时)。
-
-
时间转换:
-
将最晚出发时间(分钟)转换为小时和分钟:
-
小时数:
last_come // 60
(整除 60)。 -
分钟数:
last_come % 60
(取余 60)。
-
-
-
输出结果:
-
使用格式化字符串
f"{hours:02d}:{minutes:02d}"
输出时间,格式为 "HH:MM"(不足两位补零)。
-