题解【洛谷】CF134A

题解 CF134A 【Average Numbers】


这题就是简单的模拟。

只不过要优化一下常数什么的

思路:

为了不浪费时间总是取平均数,直接用一个 S 储存总和,每次都减去 a_i 再除以 n-i 再乘以 1.0 就珂已了。

下面上代码:

#include <bits/stdc++.h>
using namespace std;
int a[200001],S,b[200001],top = 0,ans;
int main() {
    int n;
    cin>>n;
    for (register int i = 1; i <= n; i++) {
        cin>>a[i];
        S += a[i];//S累加
    }
    for (register int i = 1; i <= n; i++) {
        if(a[i] == (S - a[i]) * 1.0 / (n - 1)) {//判断平均数与ai是否相等
            b[++top] = i;//标记
            ans++;//统计个数
        }
    }
    cout<<ans<<endl;
    for (register int i = 1; i <= top; i++)
        cout<<b[i]<<' ';//输出,不解释
    cout<<endl;
    return 0;
}

题目链接:https://www.luogu.org/problem/CF134A
原文地址:https://www.cnblogs.com/Ice-watermelon233/p/problem_ans_luogu_CF134A.html