描述
这是一个加强版的斐波那契数列。给定递推式
求F(n)的值,由于这个值可能太大,请对$10^9+7$取模。
Input
第一行是一个整数T(1 ≤ T ≤ 1000),表示样例的个数。
以后每个样例一行,是一个整数$n(1 ≤ n ≤ 10^18)$。
Output
每个样例输出一行,一个整数,表示F(n) mod 1000000007。
Examples
intput
1
2
3
4
54
1
2
3
100output
1
2
3
41
16
57
558616258
思路
- n最大$10^18$,O(n)肯定会T,可以考虑矩阵快速幂求解。
- 由于题目给了递推式,所以很显然我们需要求一个$X$矩阵,使得这个矩阵满足
,易得。
将$F_{i},F_{i - 1},(i + 1)^3,(i + 1)^2$按递推式展开,取对应系数即可,- 递推式是从2开始的,所以对与第$n$项,只需求$X^{n-1}$,所得矩阵再左乘一个$\begin{bmatrix}F_1 & F_0 & 2^3 & 2^2 & 2 & 1\end{bmatrix}^{-1}$,所得矩阵的第一个元素即为$F_i$
代码
1 |
|