题解 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