70分,不懂哪里没考虑到,求大佬帮助

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

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 也可以达到向上取整的目的吧,谢谢了


|