首页 > 其他 > 详细

矩阵乘法+快速幂求斐波那契

时间:2015-10-29 21:52:53      阅读:221      评论:0      收藏:0      [点我收藏+]
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m;
int a[2][2]={1,1,1,0};
int b[2][2]={1,0,0,1};
void jzcf(int a[2][2],int b[2][2])
{
    int i,j,k;
    int c[2][2];
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
        {
            c[i][j]=0;
            for(k=0;k<2;k++)
            {
                c[i][j]=(c[i][j]+a[i][k]*b[k][j])%m;
            }
        }
    }
    for(i=0;i<2;i++)
    {
        for(j=0;j<2;j++)
        {
            b[i][j]=c[i][j];
        }
    }
}
void ksm(int n)
{
    if(n==0)
    {
        cout<<0<<endl;
        return;
    }
    else if(n==1)
    {
        cout<<1<<endl;
        return;
    }
    n--;
    while(n)
    {
        if(n%2==1)
        {
            jzcf(a,b);
        }
        jzcf(a,a);
//        cout<<a[0][0]<<endl;
        n/=2;
    }
    cout<<b[0][0]<<endl;
}
int main()
{
    int t;
    while(~scanf("%d",&t))
    {
        while(t--)
        {
            
            cin>>n>>m;
            ksm(n);
//            a[2][2]={1,1,1,0};
//            b[2][2]={1,0,0,1};
            a[0][0]=a[0][1]=a[1][0]=b[0][0]=b[1][1]=1;
            a[1][1]=b[0][1]=b[1][0]=0;
        }
    }
    return 0;
}

大神博客:

母函数http://blog.csdn.net/xuzengqiang/article/details/7464337

 

http://www.cnblogs.com/dongsheng/archive/2013/06/02/3114073.html

 

矩阵乘法+快速幂求斐波那契

原文:http://www.cnblogs.com/beige1315402725/p/4921832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!