先处理函数 fif_ifi,有 fi=∑j=i−mi−1fjf_i = \sum \limits _{j = i - m}^{i - 1} f_jfi=j=i−m∑i−1fj,这个递推式显然可以通过矩阵乘法进行优化。设 FiF_iFi 表示通过递推函数 fif_ifi 得到的矩阵,则有以下矩阵的递推(以 m=5m = 5m=5 为例):
$$
F_i =
\begin{bmatrix}
f_i\
f_{i - 1}\
f_{i - 2}\
f_{i - 3}\
f_{i -4}
\end {bmatrix}
\begin{bmatrix}
1 & 1 & 1 & 1 & 1\
1 & 0 & 0 & 0 & 0\
0 & 1 & 0 & 0 & 0\
0 & 0 & 1 & 0 & 0\
0 & 0 & 0 & 1 & 0
\end {bmatrix}^k
\cdot
\begin{bmatrix}
f_{i - 1}\
f_{i - 2}\
f_{i - 3}\
f_{i - 4}\
f_{i - 5}
\end{bmatrix}
$$
gig_igi 的计算不太好处理,等价转换以下令 GiG_iGi 表示处理前 iii 位得到的所有情况的矩阵之和,因此最后的答案就会在 GnG_nGn 中。由矩阵的乘法分配律可知 Ax+y=Ax×AyA^{x + y} = A^x \times A^yA