求大佬解答

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

取整问题吧
by AuCloud @ 2023-08-30 08:07:08


在给定的代码中,问题出现在以下这行代码: ```cpp int minute = have_time - hour * 60 ; ``` 这行代码计算分钟数时,应该是从剩余时间中减去已经计算过的小时数的分钟数。但是在这个代码中,`have_time`已经减去了`need_time`,即已经减去了需要的时间。因此,这里应该是减去`hour * 60`的分钟数之后再减去1分钟,即: ```cpp int minute = have_time - (hour * 60 + 1); ``` 这样就可以正确地计算剩余的分钟数了。
by Nancy_Cherry @ 2023-08-30 08:56:43


求关
by Nancy_Cherry @ 2023-08-30 08:57:10


@[Nancy_Cherry](/user/911439) 下面写了,-=1就90wa , /dk
by xzc_yhxr @ 2023-08-30 09:48:48


@[xzc_yhxr](/user/1072970) az,尴尬了 我把我的代码给你看看 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int x,y,h = 7,m = 50; cin >> x >> y; m = m - ceil((x * 1.0 / y)); while(m < 0) { h--; m += 60; } while(h < 0) h += 24; if(h < 10) cout << "0"; cout << h << ":"; if(m < 10) cout << "0"; cout << m; return 0; } ```
by Nancy_Cherry @ 2023-08-30 10:25:33


改好了,你看看 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int s, v; scanf("%d %d", &s, &v); int need_time = ceil(static_cast<double>(s) / v) + 10; int have_time = 80 * 60; if (need_time > have_time) { have_time += 24 * 60; } have_time -= need_time; int hour = have_time / 60; int minute = have_time % 60; hour %= 24; hour < 10 ? printf("%c%d", '0', hour) : printf("%d", hour); cout << ":"; minute < 10 ? printf("%c%d", '0', minute) : printf("%d", minute); return 0; } ``` 对于表达式 s / v,s 和 v 都是整数类型,因此整数除法会导致结果被截断,得不到准确的商值。为了解决这个问题,我将 s 强制转换为 double 类型,使用浮点数除法来计算准确的商值。 然后最好不使用 printf 和 cout 两种不同的输出方式,可能导致输出结果混乱。 ~~改都改了给个关注不过分吧~~
by Nancy_Cherry @ 2023-08-30 10:46:27


@[Nancy_Cherry](/user/911439) 关了
by xzc_yhxr @ 2023-08-30 21:13:21


|