[2020年10月28日普级组]1403.区间和的和
区 间 和 的 和 区间和的和 区间和的和
题目解析
这道题是道数学题,通过找规律可以得出一个式子:
a
n
s
=
a
n
s
+
a
∗
i
∗
(
n
−
i
+
1
)
ans = ans + a * i * (n - i + 1) %M;
ans=ans+a∗i∗(n−i+1)
具体的推导过程我忘了,罪过😧
Code
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
ll n, ans, a;
const ll M = 1e9 + 7;
int main ()
{
scanf ("%lld", &n);
for (ll i = 1; i <= n; ++ i)
{
scanf ("%lld", &a);
ans = ans + a * i * (n - i + 1) % M;
}
printf ("%lld", ans % M);
return 0;
}