【洛谷刷题笔记】P5707 上学迟到

1. 题目:

题目描述

学校和 yyy 的家之间的距离为 $s$ 米,而 yyy 以 $v$ 米每分钟的速度匀速走向学校。

在上学的路上,yyy 还要额外花费 $10$ 分钟的时间进行垃圾分类。

学校要求必须在上午 $\textrm{8:00}$ 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。

由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

输入格式

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

输出格式

输出一个 $24$ 小时制下的时间,代表 yyy 最晚的出发时间。

输出格式为 $\texttt{HH:MM}$,分别代表该时间的时和分。必须输出两位,不足前面补 $0$。

样例 #1

样例输入 #1

100 99

样例输出 #1

07:48

提示

对于 100%的数据 1≤s,v≤10^4。

2.思路:

首先通过S、V计算路程所用时间(单位min)。后加10min得到总的时间t。
再通过运算转换为小时与分钟。
最后注意细节处理。如:不够一分钟取整、输出时加不加“0”……
输出。

3.源码:

#include <iostream>
using namespace std;

int s, v, t, h, m;
int hour, minute;//最终输出的两个数

int main() {
    cin >> s >> v;
    t = s / v;
    if (s % v != 0) {
        t++;
    }
    //加上垃圾分类耗时得到总时间
    t = t + 10;

    h = t / 60 + 1;
    m = t % 60;

    minute = 60 - m;
    hour = 8 - h;
    //使x:60变为x+1:00
    if (minute == 60) {
        minute = 0;
        hour++;
    }
    //处理前一天的时间表示
    if (hour < 0) {
        hour = 24 + hour;
    }

    //处理输出:输出的小时和分钟要输出两位,不足10的时候要补0。
    //分开处理小时和分钟
    if (hour < 10) {
        cout << "0" << hour;
    } else {
        cout << hour;
    }
    cout << ":";
    if (minute < 10) {
        cout << "0" << minute;
    } else {
        cout << minute;
    }
}

4.反思:

这道题在洛谷的入门题单中被标为“普及-”,相较于其他题,难得不是程序逻辑,而是细节处理,避开各种坑。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇