1. 程式人生 > 其它 >CF134A Average Numbers 題解

CF134A Average Numbers 題解

CF134A Average Numbers 題解

Content

\(n\) 個數 \(a_1,a_2,a_3,...,a_n\)。試求出使得 \(a_i\) 與其他所有整數的算術平均值相等的所有 \(i\)

資料範圍:\(2\leqslant n\leqslant 2\times10^5,1\leqslant a_i\leqslant 1000\)

Solution

我們可以將其轉化為:求出能滿足 \(a_i=\dfrac{\sum\limits_{j=1}^na_j-a_i}{n-1}\) 的所有 \(i\)。直接在數列中掃一遍看能不能滿足這個條件即可。注意精度問題,需要將 \(a_i\) 開成高精度的 \(\texttt{double}\)

Code

#include <cstdio>
#include <algorithm>
using namespace std;

int n, ans[200007];
double s, a[200007];

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i) {
		scanf("%lf", &a[i]);
		s += a[i];
	} 
	for(int i = 1; i <= n; ++i)
		if(a[i] == (s - a[i]) / (n - 1))	ans[++ans[0]] = i;
	for(int i = 0; i <= ans[0]; ++i) {
		printf("%d", ans[i]);
		if(!i)	puts("");
		else	printf(" ");
	}
	return 0;
}