70分(后三个错)c++

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

eee2010 @ 2023-10-05 09:09:29

#include<bits/stdc++.h>
using namespace std;
int s,u,g,d,v,f;
int main(){
    cin>>s>>u;
    if(s%u!=0){
        f=s/u+1;
    }else{
        f=s/u;
    }
    d=480-10-f;
    if(d/60<10){
        g=d/60;
        v=d-g*60;
        if(v<10){
            cout<<"0"<<g<<":"<<"0"<<v;
        }else{
            cout<<"0"<<g<<":"<<v;
        }
    }else{
        g=d/60;
        v=d-g*60;
        if(v<10){
            cout<<g<<":"<<"0"<<v;
        }else{
            cout<<g<<":"<<v;
        }
    }
    return 0;
}

by xyhuuz @ 2023-10-23 14:52:34

啊,这显然是没考虑到超过8小时的情况

我Copy一下你的代码输入481 1,正确输出是23:49,你的是00:0-11

可以先直接初始化g=8,然后直接减,小于零了就加24:

g-=(f%60==0)?f/60:f/60+1;
if(g<0) g+=24;

v的话就简单了,直接

v=60-(f%60);

这样就不需要变量d了

还有就是C语言的printf函数可以用%02d来输出两位数,如果是个位数字会自动用0在前补位,免去了判断小不小于10的麻烦。这样输出只要一行

printf("%02d:%02d",g,v);

by xyhuuz @ 2023-10-23 15:04:14

@xyhuuz

对了,还要再添一句

if(v==60) v=0;

避免输出xx:60的尴尬


|