[普通递推数列] 转自《信息学奥赛之数学一本通》

[普通递推数列]

问题描述

给出一个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],求解即可 \]

猜你喜欢

转载自www.cnblogs.com/yangxuejian/p/11415762.html