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的尴尬