輸入多組測試案例,每組:n 學生、m 門課(n≤50, m≤5),後接 n×m 分數。輸出:
1. n 個學生平均分(保留 2 位小數)
2. m 個課程平均分(保留 2 位小數)
3. 所有課程分數均 ≥ 該課平均分的學生人數
每組輸出後空一行。
n, m 直到 EOF。stu[i] 累加第 i 學生總分,course[j] 累加第 j 課程總分。stu_avg[i] = stu[i]/m, course_avg[j] = course[j]/n。score[i][j] >= course_avg[j] 是否對所有 j 成立。printf("%.2f", ...),空格分隔,行末無多餘空格,組間空行。#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
bool firstCase = true;
while (cin >> n >> m) {
if (!firstCase) cout << '\n'; // 組間空行
firstCase = false;
vector<vector<double>> a(n, vector<double>(m));
vector<double> stu_sum(n, 0), course_sum(m, 0);
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j) {
cin >> a[i][j];
stu_sum[i] += a[i][j];
course_sum[j] += a[i][j];
}
vector<double> stu_avg(n), course_avg(m);
for (int i = 0; i < n; ++i) stu_avg[i] = stu_sum[i] / m;
for (int j = 0; j < m; ++j) course_avg[j] = course_sum[j] / n;
// 輸出學生平均
for (int i = 0; i < n; ++i) {
if (i) cout << ' ';
cout << fixed << setprecision(2) << stu_avg[i];
}
cout << '\n';
// 輸出課程平均
for (int j = 0; j < m; ++j) {
if (j) cout << ' ';
cout << fixed << setprecision(2) << course_avg[j];
}
cout << '\n';
// 統計全科達標學生
int cnt = 0;
for (int i = 0; i < n; ++i) {
bool ok = true;
for (int j = 0; j < m; ++j)
if (a[i][j] + 1e-9 < course_avg[j]) { ok = false; break; }
if (ok) ++cnt;
}
cout << cnt << '\n';
}
return 0;
}
a[i][j] + 1e-9 < course_avg[j] 避免精度誤差導致誤判。fixed << setprecision(2) 保證兩位小數;組間空行用 firstCase 標記控制。while (cin >> n >> m) 自動處理 EOF。O(總學生數 × 總課程數),極小。O(n×m) 存分數矩陣,或可流式處理進一步優化至 O(m)。HDU 2023 是基礎輸入輸出與格式控制題。核心難點在於多組輸出格式精確控制(小數位、空格、空行)與浮點比較容差。掌握 iomanip 格式化輸出、vector 動態存儲、EOF 循環讀取,即可穩健 AC。