题解:P13910 [CSPro 26] 归一化处理

· · 题解

这题很简单,按照题目要求模拟即可。

我们先算出平均值,从 1n 累加 a_i,再除以 n

再运用平均值计算方差,如题目公式。

最后再分别计算 f(a_i) 就可以啦!

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int n,a[N];
double sum,d;
int main(){
    cin >> n;
    for(int i = 1;i <= n;++i){
        cin >> a[i];
        sum += a[i];
    }
    //计算平均值 

    sum /= n;
    //计算方差
    for(int i = 1;i <= n;++i){
        d += (a[i] - sum) * (a[i] - sum);
    } 
    d /= n;
    for(int i = 1;i <= n;++i){
        printf("%.15lf\n",(a[i] - sum) / sqrt(d));
    }
    return 0;
}