求救大佬,为啥暴力硬解测试点不过啊,┭┮﹏┭┮

P5707 【深基2.例12】上学迟到

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,这样免去了判断小时和分钟是否是两位数的麻烦


|