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

    ID: 5777 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数据结构数论动态规划组合数学

「CEOI2018」斐波那契表示法

题目描述

译自 CEOI2018 Day2 T1. Fibonacci Representations 译者为来自 FZYZ OI Group 的 @nealchen

定义斐波那契数列为:

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

样例解释

$$\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=5F_4=5,因此 X(p1)=2X(p_1)=2
  • 66 有两种表示法:1+51+51+2+31+2+3
  • 77 只有一种表示法:2+52+5
  • 1515 有两种表示法:2+132+132+5+82+5+8

数据范围与提示

子任务 约束 分值
1 n,ai15n, a_i \leq 15 5
2 n,ai100n, a_i \leq 100 20
3 n100n \leq 100aia_i 是不同的完全平方数 15
4 n100n \leq 100 10
5 aia_i 是不同的偶数 15
6 无特殊约束 35