A. 增殖数列之和

增殖数列之和

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目内容

小蓝最近在研究一种特殊的递推数列,这种数列在数字增殖模型中经常出现。数列 FF 的定义如下:

  • F(0)=1F(0) = 1。
  • 对于任意正整数 xx,有F(x)=(x+1+∑i=0x−1(i+1)⋅F(i)) mod (109+7)F(x) = \left( x+1 + \sum_{i=0}^{x-1} (i+1) \cdot F(i) \right) \bmod (10^9+7)

现在他获得了一个长度为 nn 的正整数序列 a1,a2,…,ana_1, a_2, \dots, a_n。请你帮他计算所有 F(ai)F(a_i) 之和,即

S=∑i=1nF(ai)S = \sum_{i=1}^n F(a_i)

由于结果可能很大,请输出 SS 对 109+710^9+7 取模的结果。

数据规模与约定:序列长度 nn 不超过 10510^5;每个 aia_i 均为正整数且不超过 10510^5。

输入描述

第一行包含一个整数 nn,表示序列的长度。 第二行包含 nn 个正整数,第 ii 个数为 aia_i,相邻整数之间用空格分隔。

输出描述

输出一个整数,表示 ∑i=1nF(ai)\sum_{i=1}^n F(a_i) 对 109+710^9+7 取模的结果。

样例1

输入

1
1

输出

3

说明

序列中只有一个元素 a1=1a_1 = 1,因此需要计算 F(1)F(1)。 已知 F(0)=1F(0)=1。根据递推式:

F(1)=(1+1+∑i=00(i+1)⋅F(i)) mod (109+7)F(1) = \left( 1+1 + \sum_{i=0}^{0} (i+1) \cdot F(i) \right) \bmod (10^9+7)

求和项只有 i=0i=0:(0+1)⋅F(0)=1⋅1=1(0+1) \cdot F(0) = 1 \cdot 1 = 1。 于是 F(1)=(2+1) mod (109+7)=3F(1) = (2 + 1) \bmod (10^9+7) = 3。答案为 3。

样例2

输入

3
2 3 4

输出

257

说明

序列包含三个元素 2,3,42, 3, 4。我们依次递推计算 FF 的值:

  • F(0)=1F(0)=1,前缀和 S0=1×F(0)=1S_0 = 1 \times F(0) = 1。
  • F(1)=2+S0=3F(1)=2 + S_0 = 3,更新 S1=1+2×3=7S_1 = 1 + 2 \times 3 = 7。
  • F(2)=3+S1=10F(2)=3 + S_1 = 10,更新 S2=7+3×10=37S_2 = 7 + 3 \times 10 = 37。
  • F(3)=4+S2=41F(3)=4 + S_2 = 41,更新 S3=37+4×41=201S_3 = 37 + 4 \times 41 = 201。
  • F(4)=5+S3=206F(4)=5 + S_3 = 206。 因此 F(2)=10F(2)=10,F(3)=41F(3)=41,F(4)=206F(4)=206。总和为 10+41+206=25710+41+206=257,对 109+710^9+7 取模后仍为 257。

样例3

输入

2
5 5

输出

2474

说明

序列包含两个 55,需要计算 2×F(5)2 \times F(5)。 由前面的递推已知 S3=201S_3 = 201,F(4)=206F(4)=206,计算得 S4=201+5×206=1231S_4 = 201 + 5 \times 206 = 1231。 于是 F(5)=6+S4=6+1231=1237F(5) = 6 + S_4 = 6 + 1231 = 1237。 总和为 1237+1237=24741237 + 1237 = 2474,模 109+710^9+7 后仍为 2474。

春招模拟赛第十七场|小红📕|2023.4.23

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2023-5-7 19:00
End at
2023-5-7 20:18
Duration
1.3 hour(s)
Host
Partic.
33