洛谷做题2:P5707 【深基2.例12】上学迟到

题目描述

学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

一行两个正整数 s,v,分别代表路程和速度。

输出格式

输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。

输入输出样例

输入

100 99

输出

07:48

说明/提示
对于 100% 的数据,1≤s,v≤10^4

分析:

同时输入两个整数,用map+split()组合。
公式:时间=路程/速度
用现有时间-需要花的时间,但这里是hh:mm的格式,要进行转换。注意的是,这里允许提前一天。

方法一:先判断目前花费的时间是否大于8小时,小于8小时,且时间%60==0,刚好是整个小时,mm=0,hh=8-时间//60。若不满一个小时,则mm=60-时间%60,hh=8-时间//60-1。

如果大于8小时,计算时要先去掉当天的8小时。时间%60==0,刚好是整个小时,mm=0,hh=24-(时间//60-8)。若不满一个小时,则mm=60-时间%60,hh=24-(时间//60-8)-1。
最后格式化输出,结果是整数。保留2位,即宽度为2。不足0替代,即%02d

s,v=map(int,input().split())
t=s/v+10#所需时间
if t/60<=8:#所需时间小于8,当天出发
    if t%60==0:#整个小时
        h=8-t/60
        m=0
    else:#不整
        h=8-t//60-1
        m=60-t%60
else:#所需时间大于8,提前一天出发
    if t%60==0:
        h=24-t/60+8#提前一天出发,所花时间要先去掉当天的8小时。
        m=0
    else:
        h=24-t//60-1+8
        m=60-t%60
print("%02d:%02d"%(h,m))

方法二:算出来前一天和当天8小时一共多少分钟。再算所需要花的时间,也转换成分钟。相减得到剩下的时间。

总剩下的大于2460,就不用提前一天,当天剩下的时间就=总剩下时间-2460
总剩下的小鱼24*60,要提前一天。
剩下的时间%60就是分钟,//60就是时钟。

s,v=map(int,input().split())
t=s/v+10
n=(8+24)*60
n=n-t  #剩下的时间
if n>24*60: #不用提前一天
    n=n-24*60 #当天剩下的时间
h=n//60
m=n%60
print("%02d:%02d"%(h,m))

已验证:两中国方法都可accepted。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值