[普通递推数列] 转自《信息学奥赛之数学一本通》
[普通递推数列]
问题描述
给出一个k阶齐次递推数列f[i]的通项公式
\[f[i] = \prod_{j = 1}^k a_jf_{i-j}
\]
以及初始值f[0], f[1], f[2], ··· , f[k - 1], 求f[n].
输入格式
第一行两个整数n, k;
第二行k个整数,a[1] ~ a[k]
第三行k个整数,f[0] ~ f[k - 1]
输出格式
一行一个整数p, 是f[n] % 10000 的结果
example input
10 2
1 1
1 1
example output
89
solution
\[令 F =
\begin{Vmatrix}
f_{i - 1}\\
f_{i - 2}\\
\vdots\\
f_{i - k}
\end{Vmatrix},
F^` =
\begin{Vmatrix}
f_{i}\\
f_{i - 2}\\
\vdots\\
f_{i-k+1}
\end{Vmatrix}\\
设F * A = F ^ `,通过比较,可知:\\
A =
\begin{Vmatrix}
a_1 \quad a_2 \quad a_3 \quad \cdots \quad a_n\\
1 \quad \; 0 \quad \; 0 \quad \; \cdots \quad \; 0 \\
0 \quad \; 1 \quad \; 0 \quad \; \cdots \quad \; 0 \\
\vdots \quad \; \vdots \quad \; \vdots \quad \; \ddots \quad \; \vdots \\
0 \quad \; 0 \quad \; \cdots \quad \;1 \quad \; 0 \\
\end{Vmatrix}\\
于是, 若有 F_0 =
\begin{Vmatrix}
f_{k - 1}\\
f_{k - 2}\\
\vdots\\
f_{0}
\end{Vmatrix},\\
则\\
F_{i - k + 1} =
\begin{Vmatrix}
f_{i}\\
f_{i - 1}\\
\vdots\\
f_{i - k + 1}
\end{Vmatrix}, ans = F_{i - k + 1}[1][1],求解即可
\]