D
e
s
c
r
i
p
t
i
o
n
Description
Description
T
r
a
i
n
Train
Train
o
f
of
of
T
h
o
u
g
h
t
Thought
Thought
通过手推几组数据,我们可以发现: 每个数会在
(
i
∗
(
n
−
i
+
1
)
)
(i * (n - i + 1))
(i∗(n−i+1))个区间里出现 其中
i
i
i为这个数在题目给出的序列中的位置,
n
n
n为序列中元素个数 所以,只要按照公式统计每个数,再全部加起来就好了
C
o
d
e
Code
Code
#include<iostream>
#include<cstdio>
using namespace std
;
int main()
{
int n
; long long x
, ans
= 0;
scanf("%d", &n
);
for (int i
= 1; i
<= n
; ++i
)
{
scanf("%lld", &x
);
ans
= (x
* i
* (n
- i
+ 1) + ans
) % 1000000007;
}
printf("%lld", ans
);
}
转载请注明原文地址: https://mac.8miu.com/read-491522.html