@[PaiDaDa](/user/1290989)
当 $\frac{s}{v}=470$ 时输出错误。建议加一个 `if`。
by blsya23a2 @ 2024-07-14 10:46:15
@[blsya23a2](/user/1005781)
```c
if(HH>8){
printf("%02d:%02d",32-HH,MM);
}
else if(HH<8){
printf("%02d:%02d",8-HH,MM);
}
else if(HH==8){
printf("00:00");
}
```
你好,请问你说的加if是这个吗?这个我试过了,这种情况下第7和9测试点会报错。请大佬再说明一次,拜托了!
by PaiDaDa @ 2024-07-14 19:24:30
不知道。我主要写 python。
by blsya23a2 @ 2024-07-14 21:12:35
你这个s和v用的是int
导致s/v结果已经向下取整了,导致如果s和v整除
比如s=1,v=1,导致59-MM那行的结果是48,结果就是错的,
有很多种修改方式,最简单的一种是把s和v改为double并且将59-MM改为60-MM;
```
#include<stdio.h>
#include<math.h>
int main(){
double s,v;
int t,HH=0,MM=0;
scanf("%lf %lf",&s,&v);
t=ceil(s/v)+10;
while(t>60){
HH+=1;
t-=60;
}
MM=t;
if(MM!=0){
HH+=1;
MM=60-MM;
}
if(HH>8){
printf("%02d:%02d",32-HH,MM);
}
else {
printf("%02d:%02d",8-HH,MM);
}
return 0;
}
```
by originalsage @ 2024-07-14 22:33:27
@[originalsage](/user/1383861)
感谢大佬帮忙!!!!想明白了
by PaiDaDa @ 2024-07-15 11:29:11
@[PaiDaDa](/user/1290989)
问题:当s,v都是int类型是s/v就已经是向下取整了。因此ceil()函数发挥不了作用。
大佬给出的解决方案:将s,v类型改成double,并且将59-t改成60-t
结果是:修改成功
by PaiDaDa @ 2024-07-15 11:33:20