C++90分 第7个没过 求助

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

liuyichen2024 @ 2024-08-01 12:53:45

#include<bits/stdc++.h>
using namespace std;
int s,v,fen,shi,hua,sj;
int main(){
    cin>>s>>v;
    if(s%v==0){hua=s/v;}
    else{hua=(s/v)+1;}
    sj=1910-(hua);
    fen=sj%60;
    shi=(sj/60);
    if(shi>24)shi=shi-24;
    if(shi<10){
        if(fen<10){
            cout<<'0'<<shi<<":"<<'0'<<fen;
        }else{cout<<'0'<<shi<<":"<<fen;}
    }else{
        if(fen<10){
            cout<<shi<<":"<<'0'<<fen;
        }else{cout<<shi<<":"<<fen;}
    }
}

by liuyichen2024 @ 2024-08-01 13:01:24

1910是860+24\60-10 sj是从前一天八点到该出发的时刻的时间 按理说这个sj要换成HH:MM的计时法应该再加一个8小时吧 但是不加反而才能过大部分样例


by liuyichen2024 @ 2024-08-01 13:13:05

不是。。。我以为可能这个计时法只有0点没有24点然后就该成shi>=24就减24 结果这回第7个AC了但是后面的都Wa了


by liuyichen2024 @ 2024-08-01 13:19:51

哦不是我在1910里已经加了8个小时了 所以后面不用加了 但是为什么第7个过不了


by ZYMMM @ 2024-08-01 17:41:42

@liuyichen2024 题目样例中有00:00 你这个是24:00 把shi>24改成shi>=24就行


by liuyichen2024 @ 2024-08-01 17:47:49

@ZYMMM 但是我已经试过改这个了,并没有过而是变成后三个不过了(第七个倒是过了。。)这个70分的代码如下


#include<bits/stdc++.h>
using namespace std;
int s,v,fen,shi,hua,sj;
int main(){
    cin>>s>>v;
    if(s%v==0){hua=s/v;}
    else{hua=(s/v)+1;}
    sj=1910-(hua);
    fen=sj%60;
    shi=(sj/60);
    if(shi>=24){shi=shi-24;}
    else{shi=shi-8;}
    if(shi<10){
        if(fen<10){
            cout<<'0'<<shi<<":"<<'0'<<fen;
        }else{cout<<'0'<<shi<<":"<<fen;}
    }else{
        if(fen<10){
            cout<<shi<<":"<<'0'<<fen;
        }else{cout<<shi<<":"<<fen;}
    }
}```

by liuyichen2024 @ 2024-08-01 17:49:07

@ZYMMM 不过我用另一种改法过了


#include<bits/stdc++.h>
using namespace std;
int s,v,fen,shi,hua,sj;
int main(){
    cin>>s>>v;
    if(s%v==0){hua=s/v;}
    else{hua=(s/v)+1;}
    sj=1910-(hua);
    fen=sj%60;
    shi=(sj/60);
    if(shi>24)shi=shi-24;
    if(shi==24)shi=0;
    if(shi<10){
        if(fen<10){
            cout<<'0'<<shi<<":"<<'0'<<fen;
        }else{cout<<'0'<<shi<<":"<<fen;}
    }else{
        if(fen<10){
            cout<<shi<<":"<<'0'<<fen;
        }else{cout<<shi<<":"<<fen;}
    }
    return 0;
}```

by liuyichen2024 @ 2024-08-01 17:56:09

我知道了。。如果shi是48的话减24还是24 所以我这两个改法有区别


by liuyichen2024 @ 2024-08-01 17:57:43

但是shi不会是48啊


by ZYMMM @ 2024-08-02 23:35:22

@liuyichen2024 为什么要加一个else{shi=shi-8;}


by ZYMMM @ 2024-08-02 23:51:03

#include<bits/stdc++.h>
using namespace std;

int main(){
    double s,v;
    int m;
    cin>>s>>v;
    if(ceil(s/v)>470){
        m=ceil(s/v)-470;
        printf("%02d:%02d",(1440-m)/60,(1440-m)%60);
    }
    else{
        m=ceil(s/v);
        printf("%02d:%02d",(470-m)/60,(470-m)%60);
    }
    return 0;
}

可以用ceil()向上取整floor()向下取整


| 下一页