洛谷上学迟到问题,哪里出错了

洛谷上学迟到问题

#include <stdio.h>
int main()
{   int a,b,c,s,v;
    scanf("%d %d",&s,&v);
      
    
    a=(480-(s/v+10));
    b=a/60;
    c=a%60;
    if(b<10||c<10)printf("0%d:0%d\n",b,c);
    else{printf("%d:%d\n",b,c);
    }0
        
    
    return 0;
}


 

需要考虑行走时间不是刚好一分钟的情况,以及提前出发的时间是在昨天的情况。

修改如下:

参考链接:


【洛谷 P5707】【深基2.例12】上学迟到 题解(时间计算)_HEX9CF的博客-CSDN博客 学校和 yyy 的家之间的距离为s米,而 yyy 以v米每分钟的速度匀速走向学校。在上学的路上,yyy 还要额外花费10分钟的时间进行垃圾分类。学校要求必须在上午8:00到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。 https://blog.csdn.net/qq_34988204/article/details/132071831


#include <stdio.h>
int main()
{   int a,b,c,s,v;
    scanf("%d %d",&s,&v);
      
    
    a=(480-(s/v+10));
    
    // https://blog.csdn.net/qq_34988204/article/details/132071831
    // https://blog.csdn.net/cc_love_program/article/details/116569820
    if(s%v!=0){ // 如果行走时间没有刚好凑足分钟,则分钟数需要再减去1 
        a-=1;
    }
    if(a>=0){  // 如果只需要在今天提前出发 
        b=a/60;
        c=a%60;
    }else{   // 如果需要在昨天提前出发 
        a=960+a;   // 计算需要在昨天8点 过多少分钟出发,960为昨天8点到凌晨0点前的分钟数:(24-8)*60=16*60=960 
        b=8+a/60;  // 计算 从昨天8点 后的哪个小时出发 
        c=a%60;    //  计算 哪个小时的多少分钟出发 
        
    }
    
    // 使用%02d:%02d打印 两位数的时间 
    printf("%02d:%02d",b,c);
    
        
    
    return 0;
}
 
 
 
// 


 
 
 
 

img

【以下回答由 GPT 生成】

你的代码几乎没有问题,只是在计算 a 的时候,你的计算公式有一点错误。应该是 a=(480-(s/v)*60-10); 而不是 a=(480-(s/v+10));

以下是修改后的代码:

#include <stdio.h>

int main()
{   
    int a,b,c,s,v;
    scanf("%d %d",&s,&v);

    a=(480-(s/v)*60-10);
    b=a/60;
    c=a%60;

    if(b<10||c<10) 
        printf("0%d:0%d\n",b,c);
    else
        printf("%d:%d\n",b,c);

    return 0;
}

请尝试使用修改后的代码,并重新运行。这应该能够解决你的问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^