题目描述
给定一个整数序列,对其中任意两个数,计算后项减前项的差,输出这些差的差。
例如对于 𝑎1,𝑎2,𝑎3,𝑎4a1,a2,a3,a4 来说,输出
(𝑎2−𝑎1)−(𝑎3−𝑎1)−(𝑎3−𝑎2)−(𝑎4−𝑎1)−(𝑎4−𝑎2)−(𝑎4−𝑎3)(a2−a1)−(a3−a1)−(a3−a2)−(a4−a1)−(a4−a2)−(a4−a3)
输入格式
- 第一行:单个整数 𝑛n
- 第二行:𝑛n 个整数 𝑎1,𝑎2,…,𝑎𝑛a1,a2,…,an
输出格式
- 单个整数表示结果
数据范围
- 对 50%50% 的数据,1≤𝑛≤5001≤n≤500,1≤𝑎𝑖≤5001≤ai≤500
- 对 100%100% 的数据,1≤𝑛≤500,0001≤n≤500,000,1≤𝑎𝑖≤500,0001≤ai≤500,000
样例数据
输入:
3
1 2 3
输出:
-2
详见代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=500010;
int n,a[N],b[N];
signed main()
{scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);b[i]=b[i-1]+a[i];}if(n==1){cout<<a[1];return 0;}if(n==2){cout<<a[2]-a[1];return 0;}int k=a[2]-a[1];for(int i=3;i<=n;i++)k-=(i-1)*a[i]-b[i-1];cout<<k;return 0;
}