icecreamaaa @ 2024-12-07 16:42:23
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int s,v;
cin >> s >> v;
int walktime = (s + v - 1) / v;//向上取整
int total = walktime + 10; // 需要的时间
int eight = 8 * 60 ;//先转化为 总分钟数
int left = eight - total;//剩下的时间
int hour = left /60;
int min = left %60;//转化为时间表上的时间
if(left < 0){
hour += 24;
}//前一天的情况
cout << setfill('0') << setw(2) << hour << ":" << setw(2) << min << endl;
return 0;
}
by cc120902 @ 2024-12-07 16:57:21
t= ceil(s/v)+10;//ceil()很重要,向上取整,否则按C++逻辑会向下取整导致行走时间少
by cc120902 @ 2024-12-07 16:59:43
如果+1去除的话,对于一些数据反而会多1
by swsy2345b @ 2024-12-10 20:58:43
要用ceil(),-1就凭空少了1。 ceil() 向上取整 floor() 向下取整(c++默认) round() 四舍五入@icecreamaaa
@cc120902 你看题解了吧。
by icecreamaaa @ 2024-12-11 16:18:45
@swsy2345b 可是我用ceil还是只有70分, (s+v-1)/ v 也可以达到向上取整的目的吧,谢谢了