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);也可以的
}
标签:12,int,深基,ceil,60,取整,P5707,include,spend
From: https://www.cnblogs.com/trmbh12/p/17777585.html