P5707 求助 python 点8 10不过

P5707 【深基2.例12】上学迟到

apl43 @ 2023-12-01 14:37:52

s, v = map(int, input().split())

t = int(470 - (s / v))
hour = (t // 60) % 24
minute = t % 60

print("%.2d:%.2d"%(hour, minute))

by Math_Cai @ 2023-12-02 15:23:33

@apl43 你的问题在于没有考虑到t<0的情况,如果s/v>470呢?因此当t<0时你的输出就是负数,所以不过


by apl43 @ 2023-12-04 16:50:19

@Math_Cai 负数 % 24 不是也会变为整数吗


by Math_Cai @ 2023-12-05 19:50:32

@apl43 哦哦,看错了。应该是少了一个向上取整的步骤,因为根据样例你可以发现,最终所花费的时间是向上取整后的结果。所以应该把

t = int(470 - (s / v))

改成

t = int(470 - math.ceil(s / v))

(别忘了在开头import math 库)


by apl43 @ 2023-12-06 11:28:52

@Math_Cai 过了,谢谢,但是我不太理解向上取整那部分,我用int(10 - 1.5)不就是向上取整了吗,难道说还有一些特殊的数值无法向上取整吗


by Math_Cai @ 2023-12-06 20:09:51

@apl43 如果x是一个浮点数,int函数会将其向下取整,返回一个小于等于x的最大整数,和题意不符哦


by apl43 @ 2023-12-06 20:51:57

@Math_Cai 哦哦,我想明白了,谢了!


|