#include<bits/stdc++.h>usingnamespace std;constlonglong mod =1e9+7;longlong a[200005], sum[200005];int n;intmain(){
cin >> n;for(int i =0; i < n; i++)
cin >>a[i];
sum[n -1]= a[n -1];for(int i = n -2; i >=0; i--){
sum[i]= sum[i +1]% mod + a[i]% mod;
sum[i]%= mod;}longlong ans =0;for(int i =0; i < n -1; i++){
ans +=(a[i]* sum[i +1])% mod;
ans %= mod;}
cout << ans % mod;return0;}
1. ls的致富宝典思路每一个数乘它的后面再相加,可以用乘法分配律等价于这个数乘后面所有数的和。用后缀和sum[i]来表示a[i]到a[n - 1]的和。从第一个数开始循环,用这个数乘后面的数的和,加到ans中。#include <bits/stdc++.h>using namespace std;const long long mod = 1e9 + 7;long long a[200005], sum[200005];int n;int main(){ c