【矩阵乘法】广义斐波那契数列
传送门:CodeVS1574
这道题解法或许有很多吧 反正蒟蒻的我写了矩阵快速幂
第一次写矩阵乘法 先贴原理: 若两个矩阵A、B可进行矩乘,则需要A的列数和B的行数一致 若A为n行p列的矩阵,B为p行m列的矩阵
$(AB)_{ij}=\sum_{k=1}^pA_{ik}*B_{kj}$那么回到题目中 用矩阵表示数列的通项公式
$\left(\begin{matrix}a_n\\a_{n-1}\end{matrix}\right)=\left(\begin{matrix}p&q\\1&0\end{matrix}\right)*\left(\begin{matrix}a_{n-1}\\a_{n-2}\end{matrix}\right)$由此
$\left(\begin{matrix}a_n\\a_{n-1}\end{matrix}\right)=\left(\begin{matrix}p&q\\1&0\end{matrix}\right)^{n-2}*\left(\begin{matrix}a_2\\a_1\end{matrix}\right)$那么可以使用快速幂求解矩阵的幂
代码如下(PS:建议定义矩阵的结构体并重载乘法)
|
|