#P51200. 「CEOI2018」斐波那契表示法

「CEOI2018」斐波那契表示法

题目描述

译自 CEOI2018 Day2 T1. Fibonacci Representations

译者为来自 FZYZ OI Group 的

https://loj.ac/user/5517


定义斐波那契数列为:

F1=1F2=2Fn=Fn1+Fn2,n3\begin{align}F_1&=1\\F_2&=2\\F_n&=F_{n-1}+F_{n-2},&n \geq 3\end{align}

其前几项为  1,2,3,5,8,13,21, 1, 2, 3, 5, 8, 13, 21, \ldots

对一个正整数 pp,令 X(p)X(p) 表示把 pp 表示为若干个不同的斐波那契数的和的表示法数,两种表示法不同当且仅当有一个斐波那契数是其中一个的项,而不是另一个的项。

给定一个 nn 项正整数序列 a1,a2,,ana_1, a_2, \ldots, a_n,对于其非空前缀 a1,a2,,aka_1, a_2, \ldots, a_k,定义 pk=Fa1+Fa2++Fakp_k=F_{a_1}+F_{a_2}+\cdots+F_{a_k}

请你对于 k=1,2,,nk=1, 2, \ldots, n,求出 X(pk)mod(109+7)X(p_k)\bmod(10^9+7)

输入格式

第一行一个整数 n (1n100000)n\ (1 \leq n \leq 100\,000)

第二行 nn 个整数 a1,a2,,an (1ai109)a_1, a_2, \ldots, a_n\ (1 \leq a_i \leq 10^9)

输出格式

nn 行,第 kk 行为 X(pk)mod(109+7)X(p_k)\bmod(10^9+7)

样例

4
4 1 1 5
2
2
1
2

p1=F4=5p2=F4+F1=5+1=6p3= F4+F1+F1=5+1+1=7p4=F4+F1+F1+F5=5+1+1+8=15\begin{align}p_1 &= F_4 = 5\\p_2 &= F_4 + F_1 = 5 + 1 = 6\\p_3 &= F_4 + F_1 + F_1 = 5 + 1 + 1 = 7\\p_4 &= F_4 + F_1 + F_1 + F_5 = 5 + 1 + 1 + 8 = 15\end{align}

55 有两种表示法:F2+F3=2+3F_2+F_3=2+3F4=5.F_4=5. 因此 X(p1)=2X(p_1)=2

66 有两种表示法:1+5=1+2+31+5=1+2+3

77 只有一种表示法:2+52+5

1515 有两种表示法:2+13=2+5+82+13=2+5+8

数据范围与提示

子任务 约束 分值
11 n,ai15n, a_i \leq 15 55
22 n,ai100n, a_i \leq 100 2020
33 n100n \leq 100aia_i 是不同的完全平方数 1515
44 n100n \leq 100 1010
55 aia_i 是不同的偶数 1515
66 无特殊约束 3535