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

1.题目介绍

2.题解

这里只有两个稍微注意的点

2.1 s % v != 0(向上取整)

这里的话,若是结果不为整数,我们必须向上取整,必须保证空余时间永远大于所需时间!

2.2 ceil向上取整函数的使用

当使用 ceil(s / v) 时,应该确保至少有一个操作数是浮点数,否则整数除法会导致结果被截断为整数。因此,你可以将其中一个操作数转换为浮点数,以确保得到正确的结果,也就是ceil((double)s / v) 。
如果运算中有常量的话处理就比较简单ceil(s/3.0),在后面加一个.0就可以了!

2.3 不足两位补零

这里我使用了setfill表示补零,setw限制必须为2位(如果是C中的printf函数就十分加简单了,直接printf("%02d:%02d",hour,min);)

std::cout << std::setfill('0') << std::setw(2) << hour << ":" << std::setw(2) << min << std::endl;
//
// Created by trmbh on 2023-10-20.
//
#include <iostream>
#include <iomanip>
#include <cmath>
int main(){
    int s, v;
    std::cin >> s >> v;
    int spend;
    spend = ceil((double)s / v) + 10; //向上取整
    int hour , min;
    if (spend < 8 * 60) {
        spend = 8*60 - spend;
    }
    else if (spend == 8 * 60) {std::cout << '00:00'; return 0;}
    else {
        spend = (24+8)*60 - spend;
    }
    hour = spend / 60;
    min = spend % 60;
    std::cout << std::setfill('0') << std::setw(2) << hour << ":" << std::setw(2) << min << std::endl;
    //这里使用printf("%02d:%02d",hour,min);也可以的
}
posted @   DawnTraveler  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示