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

「CEOI2018」斐波那契表示法

题目描述

译自 CEOI2018 Day2 T1. Fibonacci Representations

译者为来自 FZYZ OI Group 的

https://loj.ac/user/5517


定义斐波那契数列为:

$$\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

数据范围与提示

子任务 约束 分值
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