专栏文章

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

P13910题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio1oxre
此快照首次捕获于
2025/12/02 11:55
3 个月前
此快照最后确认于
2025/12/02 11:55
3 个月前
查看原文
题目大意已经很简明了。自己看。

思路

一道比较简单的模拟题。
根据题目的意思,先求出平均值:
aˉ=a1+a2++ann\bar{a}=\dfrac{a_1+a_2+\cdots+a_n}{n}
再求出方差:
D(a)=1ni=1n(aiaˉ)2D(a)=\dfrac{1}{n}\sum\limits_{i=1}^n(a_i-\bar{a})^2
这两个值是不随 ii 的变化而变化的,所以可以在读入数据之后先计算这两个数。
有了这两个值之后,我们需要对于每个 ii,输出 f(ai)=aiaˉD(a)f(a_i)=\dfrac{a_i-\bar{a}}{\sqrt{D(a)}}

代码

参考代码如下。
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long n;
	cin>>n;
	double sum=0,a[n];
	for(long long i=0;i<n;i++)
	{
		cin>>a[i];
		sum+=a[i];
	}
	double ave=sum/n/1.00;
	sum=0;
	for(long long i=0;i<n;i++)
	{
		sum+=(a[i]-ave)*(a[i]-ave);
	}
	double da=1.00/n*sum;
	da=sqrt(da);
	for(long long i=0;i<n;i++)
	{
		cout<<setprecision(10)<<(a[i]-ave)/da<<endl;
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...