首页 > 其他 > 详细

矩阵快速幂

时间:2016-03-18 20:17:41      阅读:250      评论:0      收藏:0      [点我收藏+]

 

c.

技术分享
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

#define N 2//N*N的矩阵
const int MOD=1e9+7;//

struct Matrix{
    int mat[N][N];
};

Matrix mul(Matrix a,Matrix b){
    Matrix ret;
    int i,j,k;
    for(i=0;i<N;++i){
        for(j=0;j<N;++j){
            ret.mat[i][j]=0;
            for(k=0;k<N;++k){
                ret.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
                ret.mat[i][j]%=MOD;
            }
        }
    }
    return ret;
}

Matrix pow_matrix(Matrix a,int n){
    Matrix ret;
    memset(ret.mat,0,sizeof(ret.mat));
    int i;
    for(i=0;i<N;++i){
        ret.mat[i][i]=1;
    }
    Matrix temp=a;
    while(n){
        if(n&1){
            ret=mul(ret,temp);
        }
        temp=mul(temp,temp);
        n>>=1;
    }
    return ret;
}

int main(){
    
    Matrix a;
    a.mat[0][0]=1,a.mat[0][1]=2;
    a.mat[1][0]=3,a.mat[1][1]=4;
    
    Matrix b;
    b=pow_matrix(a,2);
    
    printf("%d %d\n",b.mat[0][0],b.mat[0][1]);
    printf("%d %d\n",b.mat[1][0],b.mat[1][1]);
    
    return 0;
}
View Code

 

 

相关:http://www.cnblogs.com/vongang/archive/2012/04/01/2429015.html

http://www.cnblogs.com/kuangbin/archive/2013/05/21/3090793.html

 

矩阵快速幂

原文:http://www.cnblogs.com/bofengyu/p/5293255.html

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