矩阵快速幂(大斐波那契数)

矩阵快速幂就是把快速幂的乘法变成矩阵乘法。

应用:求斐波那契数取模(大数)

斐波那契数列递推公式(这里取从第二项开始):f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3)

 用矩阵表示为:

进一步,可以得出直接推导公式:

求第n项斐波那契数就是求

1 1
1 0的(n-1)次方的第一行第一列项,也就是n次方的第一行第二列项

#include
using namespace std;

const int maxn=2;//阶数 
const int mod=100007;

//矩阵结构体 
struct ma//matrix矩阵 
{
    int a[maxn][maxn];
    void init()
	{    //初始化为单位矩阵 
        memset(a,0,sizeof(a));
        for(int i=0;i>n;
    ma ans=qpow(a,n); 
    output(ans);//第n个矩阵 
    cout<

 

你可能感兴趣的:(ACM_分治,递归)