『题解』Luogu P5707 【深基2.例12】上学迟到

题目传送门

题目大意

yyy 的学校要求早上 \(8\) 点前到达。学校到 yyy 的家一共有 \(s(s\le10000)\) 米,而 yyy 可以以 \(v(v\le10000)\) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 \(10\) 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远,yyy 可能不得不提前一天出发,不过不可能提前超过一天。

思路

题目说明了时间可能是前一天,但不超过前一天的 \(0\) 点,
我们可以用一个变量 minute 表示从前一天的 \(0\) 点到当前天的 \(8\) 点的分钟数,然后 minute 要减去路上的垃圾分类时间 \(10\) 分钟,还要减去向上取整的走路时间,向上取整前要先将 \(s\)\(1.0\),再除以 \(v\),转换成 \(double\) 类型再取整,就是得数了。要注意,输出小时的时候要先除以 \(60\),取小时数,再 \(\bmod 24\),因为可能出发时间再前一天。

代码

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main(){
    int s,v,minute;
    cin >> s >> v;
    minute=((24+8)*60)-(ceil(1.0*s/v)+10);
    cout << setfill('0') << setw(2) << (minute/60)%24 << ":" << setw(2) << minute%60 << endl;
    return 0;
}
posted @ 2022-01-21 21:22  仙山有茗  阅读(392)  评论(0编辑  收藏  举报