【深基2.例12】上学迟到 · 教师题解
【深基2.例12】上学迟到
解题思路
步行所需分钟为向上取整 s/v,再加 10 分钟。用 8:00 对应的 480 分钟减总耗时,若跨到前一天则加 1440,输出时分。
正确性说明
最少整分钟步行时间是 (s+v-1)/v,额外 10 分钟固定。到达时刻减耗时就是最晚出门时刻;按一天取模得到时钟表示。
易错点
需要向上取整;可能前一天出门;小时和分钟都补足两位。
复杂度
时间 O(1),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int s, v;
cin >> s >> v;
int t = (480 - (s + v - 1) / v - 10) % 1440;
if (t < 0)
t += 1440;
cout << setfill('0') << setw(2) << t / 60 << ":" << setw(2) << t % 60 << "\n";
return 0;
}