.Dot. 2024-06-06 06:53 采纳率: 0%
浏览 3

洛谷c++请求帮助!

各位,最近在洛谷刷题的时候,此题一直卡着过不去,请求帮助!
洛谷链接

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int s,v,h=0,m=0;
    cin>>s>>v;
    m=s/v;
    m+=10;
    m=8*60-m;
    if(m<0){
        m=abs(m)+20*60;
    }
    h=m%60;
    m/=60;
    if(m<10){
        if(h<10){
            cout<<0<<h<<":"<<0<<m;
        }
        else{
            cout<<h<<":"<<0<<m;
        }
    }
    else{
        if(h<10){
            cout<<0<<h<<":"<<m;
        }
        else{
            cout<<h<<":"<<m;
        }
    }
    return 0;
}


谢谢!

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-06 06:53
    关注

    引自免费微信小程序:皆我百晓生

    在分析您的代码后,我发现了一些可以改进的地方。首先,让我们看看原始代码中的问题:

    1. 您计算分钟数时,加了10秒,但之后没有正确地处理这多出来的10秒。这可能会导致结果不准确。
    2. 计算小时数和分钟数时,您使用了整除(/)操作符,这会去掉小数部分,可能使结果不精确。

    为了解决这些问题,我们可以稍微调整一下代码。以下是修改后的代码:

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int main(){
        int s, v;
        cin >> s >> v;
        
        // 分钟数(包括多余的10秒)
        int m = s / v + (s % v >= 10 ? 1 : 0);
        
        // 将分钟转换成小时和剩余的分钟
        int h = m / 60;
        m %= 60;
        
        // 格式化输出
        if (h < 10) {
            cout << "0";
        }
        cout << h << ":";
        
        if (m < 10) {
            cout << "0";
        }
        cout << m;
        
        return 0;
    }
    

    这段代码做了以下改动:

    • 删除了对 hm 的初始化,因为它们不再被用到。
    • 更改了计算 m 的方式,使其包含多余的10秒,并根据是否超过10秒来决定是否增加1分钟。
    • 使用 % 运算符计算小时数 h 和剩余的分钟数 m
    • 添加了适当的空格和冒号,以及在不足两位数的情况下添加零填充。

    这个版本应该能更准确地解决您的问题。尝试运行这个代码并提交到洛谷平台,看能否通过测试。如果还有其他错误,欢迎继续提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月6日

悬赏问题

  • ¥15 app:debugCompileClasspath'.
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题