【深基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;
}