#include<bits/stdc++.h>
using namespace std;
int main(){
int s,v;
cin>>s>>v;
int n;
if(s%v==0) n=s/v+10;
else n=s/v+1+10;
int m=8;
if(n%60!=0) m--;
printf("%02d:%02d",m-n/60,60-n%60);
return 0;
}
上面这是我第一次的代码,三个测试报错了,没有考虑到需要提前一天出发,下面是我修改后的代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int s,v;
cin>>s>>v;
int n;
if(s%v==0) n=s/v+10;
else n=s/v+1+10; //比如需要时间2.5分钟要计做需要3分钟,因为"/"是两个整数相处结果是整数,所以要+1
int p,q,m;
p=n/60; //用p表示需要的整小时数
q=n%60; //用q表示零分钟数
m=60-q;
if(q!=0) {
p++;
}
else m=0;
if(8-p<0) printf("%02d:%02d",24+8-p,m); //条件写成8-p<=0会报错
else printf("%02d:%02d",8-p,m);
return 0;
}
第二个代码写的时候条件写成8-p<=0第7个测试点会报错,因为8-p=0的时候时间是在零点后,而8-p<0的情况下,就属于前一天了