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;
}
上一篇:SAP零售行业解决方案初阶 7 - 自动补货(一)


下一篇:关于Asp.Net中的编程实现下载