分析
首先想到的就是暴力枚举每一个区间,求和之后存在数组里然后再求和。
但是稳T
所以反过来想每一个数对多少个区间产生了贡献。
所以a[i]的出现次数为 i ∗ ( n − i + 1 ) i*(n-i+1) i∗(n−i+1)
上代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,a,ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
ans=(ans+a*i*(n-i+1))%1000000007;
}
cout<<ans;
return 0;
}