1
4
1 2 2 3
求所有3个数乘积和
复杂度O(n)
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int inf = 2e18 + 100;
const int maxn = 2e5 + 100;
int a[maxn],pre[maxn];
signed main()
{
int tt;
cin>>tt;
while(tt--)
{
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
pre[i]=pre[i-1]+a[i];
}
int ans=0;
sum=a[1]*a[2];//sum维护i之前两两乘积的和
for(int i=3;i<=n;i++)
{
ans+=sum*a[i];
sum+=a[i]*pre[i-1];
}
cout<<ans<<"\n";
}
}