【深基4.例3】分类平均 · 教师题解

【深基4.例3】分类平均

解题思路

枚举 1~n,按能否被 k 整除分别统计两类的总和与数量,最后各自用总和除数量。

正确性说明

每个整数恰好属于一个分支,因此两类计数与总和准确;平均数按定义为总和除数量。

易错点

必须用实数除法;题目保证两类都非空;先输出可整除类。

复杂度

时间 O(n),空间 O(1)。

参考代码(C++11)

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, k;
    cin >> n >> k;
    long long sa = 0, sb = 0;
    int ca = 0, cb = 0;
    for (int i = 1; i <= n; i++)
        if (i % k == 0) {
            sa += i;
            ca++;
        } else {
            sb += i;
            cb++;
        }
    cout << fixed << setprecision(1) << 1.0 * sa / ca << " " << 1.0 * sb / cb << "\n";
    return 0;
}
返回题目