Pisces007 @ 2023-10-24 15:44:05
#include<stdio.h>
#include<math.h>
int main()
{
int s,v,h,h0,min; //路程,速度,显示小时数,减去小时数,显示分钟数
int t; //总用时
scanf("%d%d",&s,&v); //输入路程和速度
t=ceil(10+s/v); //向上取整函数ceil()
min=60-t%60-1;
h0=(t-t%60)/60;
if(h0<8)
h=8-h0-1;
else
h=24+(8-h0-1);
printf("%02d:%02d",h,min);
return 0;
}
by xyhuuz @ 2023-10-24 23:01:15
也不知道是我不会用ceil函数还是咋的,我之前用这玩意也有问题,,,
t=(s%v==0)?s/v+10:s/v+11;
min=60-t%60;
把那两行改成这个来判断取整,应该就可以了。我现在一直弃用ceil改用这种三目运算符。
然后,你的代码还会有问题 比如,当你输入470 1的时候,正确答案00:00,而输出却是23:60
所以你的程序后面要加这几行
if(min==60){
h++;
min=0;
}
if(h==24) h=0;
讲到这我就不得不说测试点其实是有漏洞的! 比如,我写的程序在输入470 1的时候,会输出00:60,但我还是AC了,,所以我又提交了一遍,加了一行,以防日后hack
if(min==60) min=0;
by L1739424615 @ 2023-10-26 16:36:55
@xyhuuz ceil()用于浮点数而这个是int,
by xyhuuz @ 2023-10-26 18:45:27
@L1739424615 受教,感谢