quark1997 @ 2023-10-24 00:04:17
#include <stdio.h>
int main() {
int s,v;
scanf("%d%d",&s,&v);
double fen=s/v;
if(fen>50){
int i=0;
for(i=1;i<24;i++){
fen=fen-60;
if(fen<50)break;
}
int a = 49 - (int)fen;
printf("0%d:%d",7-i,a);
}
else {
int a = 49- (int)fen;
printf("07:%d",a);
}
return 0;
}
by xyhuuz @ 2023-10-24 14:26:59
你可以试试输入481 1,正确输出是23:49,你的是0-1:48。
应该是没看清题,题目中要求输出时间是24小时制,最多可以提前一整天出发,也就是说完全有在前一天就得出发的可能,你的代码一旦超过八小时时针刻度就有问题了。一个简单的办法是判断7-i是否小于零,小于零就加24,这样-1就能变成23,以此类推。
而且分钟也有问题:题目给的测试点是100 99,所以为不迟到要12分钟,但是如果是100 50,照样是12分钟,而你的代码会输出07:47,你应该先判断路程除速率能不能整除。
最后就是可以直接用
printf("%02d:%02d",h,m);
来输出两位数,如果是个位数会自动在前补0,这样免去了判断小时和分钟是否是两位数的麻烦