题目解析
题意
给定N个整数,求每个数与其他N-1个数的距离之和。
思路
先将整数按从小到大顺序排序,然后求每相邻两个数的差值,每个差值有i*(N-i)个,最终结果要乘2。注意范围,结果用long long。
代码
#include<stdio.h>
#include<algorithm>//sort()的头文件
using namespace std;
#define LL long long
#define MAX 10005
int a[MAX];
int main(){
//freopen("TXA.txt","r",stdin);
int N,i;
while(~scanf("%d",&N)){
LL res=0;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,a+N);
for(i=1;i<N;i++)
res+=(LL)(a[i]-a[i-1])*i*(N-i);//a[i]-a[i-1]有i*(N-i)个
printf("%lld\n",2*res);
}
return 0;
}