题目
给定 n 个整数 a1,a2,⋅⋅⋅,an,求它们两两相乘再相加的和,即
S=a1⋅a2+a1⋅a3+⋅⋅⋅+a1⋅an+a2⋅a3+⋅⋅⋅+an−2⋅an−1+an−2⋅an+an−1⋅an
输入
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a1,a2,⋅⋅⋅,an。
输出
输出一个整数 S,表示所求的和。
请使用合适的数据类型进行运算。
样例
输入样例:
4
1 3 6 9
输出样例:
117
代码
#include<iostream>
using namespace std;
const int N = 200010;
int s[N],q[N];
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&q[i]);
s[i] += s[i-1]+q[i-1];
}
long long res = 0;
for(int i=n;i>0;i--){
res += (long long)q[i]*s[i];
}
printf("%lld",res);
}