矩阵快速幂算法笔记

a[i]=a[i-1]+b[i-1]+1, b[i]=2*a[i-1]-5 ; a[1]=1,b[1]=1, 问a[x]=?,b[x]=?
很简单的递推,一步步推即可,但是,如果x是10^9,如何推?
思维:递推式可以化为矩阵乘积

那么,矩阵A[i]=A[i-1]B;
A[i+1]=A[i]
B=A[i-1]BB
A[x]=A[1]BBB.......=A[1]( B^(x-1) );
因为矩阵乘积可以换乘积顺序,所以可以先算出B^(x-1),如何计算呢?
快速幂!

问题迎刃而解~

1.构造出递推矩阵
2.对构造出的矩阵B,进行B^x的快速幂,乘积换成矩阵乘法。
3.最后矩阵的第一行第一列和第二列就是a[x]和a[y]。

其实快速幂和矩阵快速幂是异曲同工,但是往往构造矩阵是难点,转载一个别人博客写的矩阵构造方法:
1184092-20180820213139976-1056517438.png
1184092-20180820213150899-1882327545.png

矩阵快速幂算法笔记_第1张图片

转载于:https://www.cnblogs.com/Roni-i/p/9508102.html

你可能感兴趣的:(矩阵快速幂算法笔记)