輸入兩個整數 n 和 m,對前 n 個正偶數(2, 4, ..., 2n)進行分組求和:每 m 個數為一組,輸出每組的平均值(整數除法)。若最後一組不足 m 個,仍輸出其平均值。
程式使用單層迴圈遍歷偶數,維護計數器 k 與累加器 sum。每累積 m 個數即輸出平均值並歸零,迴圈結束後處理餘數組。
#include <stdio.h>
int main() {
int i, n, m, k, sum;
while (scanf("%d %d", &n, &m) != EOF) {
k = 0;
sum = 0;
for (i = 2; i <= 2 * n; i += 2) {
sum += i;
k++;
if (k % m == 0) {
printf("%d", sum / m);
sum = 0;
k = 0;
if (i < 2 * n) printf(" ");
}
}
if (sum) {
printf("%d", sum / k);
}
printf("\n");
}
return 0;
}
可利用等差數列求和公式直接計算每組總和,將時間複雜度從 O(n) 降至 O(n/m),但對本題資料範圍影響不大。