Description
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
Input
一行两个正整数 s,v,分别代表路程和速度。
Output
输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM分别代表该时间的时和分。必须输出两位,不足前面补 00。
Sample 1
Input | Output |
100 99 | 07:48 |
Hint
对于 100% 的数据,1≤s,v≤10*10*10*10。
代码实现:
#include <stdio.h>
int main() {
int s, t3, v, t1, t2, h, m;
scanf("%d%d", &s, &v);
if (s % v != 0)
t1 = s / v + 1 + 10;
else
t1 = s / v + 10;
t2 = 480 - t1;
if (t2 > 0) {
h = t2 / 60;
m = t2 % 60;
} else {
t3 = 24 * 60 + t2;
h = t3 / 60;
m = t3 % 60;
}
printf("%02d:%02d", h, m);
return 0;
}
题意描述:一名为yyy的同学以每分钟v米的匀速前往离家s米的学校,
在途中需要花费十分钟倒垃圾,且yyy需要在8:00准时赶到学校。
请计算yyy需要提前多长时间从家出发去学校,结果以HH:MM的形式,
分别代表该时间的时和分,不足两位时补0;提前的时间不会超过一天。
即输入s和v,输出h和m。
解题思路:首先利用已知数据求出yyy总共需要多少分钟才能抵达学校,
由s/v+10可得,因为s/v可能除不尽,用一个判断语句对其进行求余,
除尽用s/v+10,除不尽用s/v+10+1;(向上取整)然后将8:00转换为
分钟形式减去所用分钟,得到的结果分两种一种大于零直接转换为“HH:MM”
的形式,另一种为小于零,即是前一天,由于提前的时间不会超过一天,可以用
24*60+得到的时间,然后转化成“HH:MM”形式。
错误描述:求分钟的时候未考虑向上取整;
转换的时候未考虑得到的时间小于零的情况。