原题链接:https://www.acwing.com/problem/content/3785/
给定一个平面上的 N 个点,请你计算所有点对之间距离的平方和。
输入格式
第一行包含整数 N,表示点的个数。接下来 N 行,每行包含两个整数 X,Y,表示一个点的横纵坐标。
注意,不保证所有点的位置各不相同。
输出格式
输出所有点对之间距离的平方和。
数据范围
1≤N≤105, −10000≤X,Y≤10000。
输入样例:
4 1 1
-1 -1 1 -1
-1 1
输出样例:
32
解题思路:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+10;
int a[N];
signed main()
{
int n;
cin>>n;
int t=n;
int ans=0;
int res=0;
int zx=0,zy=0;
while (t -- )
{
int x,y;
cin>>x>>y;
ans+=x*x;
res+=y*y;
zx+=x;
zy+=y;
}
int xx=(n-1)*(ans+res)-(zx*zx-ans)-(zy*zy-res);
cout<<xx<<"\n";
return 0;
}