博客园码没了,所以先放这里
问题:求长度为k的常系数齐次线性递推式Σai\*hj->hi+j的第n项hn,可以写成$HA^n$,A是k阶矩阵
核心:对$A^n$取模变成$\sum_{i=0}^{k-1} c_iA^i$,加上H变为$\sum_{i=0}^{k-1} c_ih_i$
问题是找一个模之后不变的式子,即某个多项式f(A)=0
凯莱-哈密顿定理:A的特征多项式f(λ)满足f(A)=0
特征矩阵:λI-A
特征多项式:|λI-A|,把λ看作未知数,化简得到$f(\lambda)=\lambda^k-\sum_i a_i\lambda^{k-i}$
之后把A看作未知数,用A\^n模特征多项式即可化简
优化:若只有h0=1则可以求A\^(n+k-1),这样每项取的就是当前H的最后一位,而模特征多项式之后的HA\^i就只有HA\^(k-1)是1其他都是0
直接暴力倍增取模是$O(k^2\log n)$,用多项式优化取模做到$O(k\log k\log n)$