前缀和
链接:https://ac.nowcoder.com/acm/contest/55407/E
来源:牛客网
给定 n 个整数 a1, a2, · · · , an ,求它们两两相乘再相加的和,即 S = a1 · a2 + a1 · a3 + · · · + a1 · an + a2 · a3 + · · · + an-2 · an-1 + an-2 · an + an-1 · an.
输入描述:
#include <iostream>
using namespace std;
const int N=2e5+10;
typedef long long ll;
ll sum[N],a[N];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
ll s=0;
for(int i=0;i<n;i++){
s=s+(sum[n-1]-sum[i])*a[i];
}
cout<<s;
return 0;
}
2023哈理工蓝桥杯模拟练习赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)

浙公网安备 33010602011771号