社区讨论
求助
学术版参与者 2已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @loc5m7y7
- 此快照首次捕获于
- 2023/10/30 08:20 2 年前
- 此快照最后确认于
- 2023/11/04 14:38 2 年前
题目描述
给出一个长度为 的数组 ,请计算所有的的和,其中 。写成公式为:\sum_{i=2}^n$$\sum_{j=1}^{i-1}$$(a_i-a_j)^2()。
输入
输入的第一行有一个数 (),表示有 个数。
第二行有 个数 ()两数之间用空格分开。
输出
一行一个数,表示答案。
Input1
INPUT13
2 8 4
Output1
OUTPUT156
Input2
INPUT25
-5 8 9 -4 -3
Output2
OUTPUT2950
CODE
CPP#include<bits/stdc++.h>
using namespace std;
const int maxN=3e5+9;
int n,d[409];
long long ans;
int read(){
int s=0,f=1;
char ch=getchar();
while (!isdigit(ch)){
if (ch=='-') f=-1;
ch=getchar();
}
while (isdigit(ch)){
s=(s<<3)+(s<<1)+(ch^48);
ch=getchar();
}
return s*f;
}
int main(){
n=read();
for (int i=1;i<=n;i++){
int x=read();
d[x+200]++;//记录该数出现的次数,消除后面重复运算
}
for (int i=-200;i<=200;i++){
if (!d[i+200]) continue;//如果这个数没有出现过则跳过
for (int j=-200;j<i;j++){
if (!d[j+200]) continue;//同上
ans+=d[i+200]*d[j+200]*(i-j)*(i-j);
}
}
cout<<ans<<endl;
return 0;
}
感谢!
回复
共 6 条回复,欢迎继续交流。
正在加载回复...