# 改了好几次终于过了
查看原帖
# 改了好几次终于过了
607150
freegt楼主2021/11/8 20:08
#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的情况下,就属于前一天了

2021/11/8 20:08
加载中...