酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

解决成绩公布愉快度计算代码WA问题

### 🐞问题分析 原代码逻辑基本正确,但是在输出时没有考虑到数据范围可能会导致整数溢出的问题。`total_happiness` 变量使用 `int` 类型,当计算结果超出 `int` 所能表示的范围时,就会出现错误。因此需要将 `total_happiness` 改为 `long long` 类型来避免溢出。 ### ✅修改后的代码 ```cpp #include <iostream> #include <vector> int main() { int n, m, B, C; // 输入学生数量 n、询问天数 m、提前一天的愉快度 B 和等待一天的不愉快度 C std::cin >> n >> m >> B >> C; std::vector<int> t(n); // 输入每个学生希望公布成绩的时间 for (int i = 0; i < n; ++i) { std::cin >> t[i]; } // 遍历每一天,计算当天公布成绩时的愉快度之和 for (int day = 1; day <= m; ++day) { // 使用 long long 类型避免整数溢出 long long total_happiness = 0; for (int i = 0; i < n; ++i) { if (day <= t[i]) { // 如果成绩在学生期望时间之前公布,计算提前的天数并乘以 B total_happiness += (long long)(t[i] - day) * B; } else { // 如果成绩在学生期望时间之后公布,计算等待的天数并乘以 C total_happiness -= (long long)(day - t[i]) * C; } } // 输出当天公布成绩时的愉快度之和 std::cout << total_happiness; if (day < m) { std::cout << " "; } } std::cout << std::endl; return 0; } ``` ### 💡代码解释 1. **变量类型修改**:将 `total_happiness` 的类型从 `int` 改为 `long long`,以避免整数溢出。 2. **强制类型转换**:在计算 `(t[i] - day) * B` 和 `(day - t[i]) * C` 时,将其中一个操作数强制转换为 `long long` 类型,确保计算结果也是 `long long` 类型。 ######[AI问答 | 571点数解答 | 2026-05-01 15:44:24]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]