您的位置:首页 > 其它

矩阵快速幂模板

2015-08-24 17:09 399 查看
#define MOD 1000000007
typedef long long ll;
typedef struct matrixnod{
ll m[2][2];
}matrix;
matrix mat(matrix a,matrix b){
matrix c;
int mod=MOD-1;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
c.m[i][j]=0;
for(int k=0;k<2;k++){
c.m[i][j]+=(a.m[i][k]*b.m[k][j]);
c.m[i][j]%=mod;
}
}
return c;
}
matrix doexpmat(matrix a,ll num){
matrix t={
1,0,
0,1
};
while(num){
if(num&1) t=mat(a,t);
num=num>>1;
a=mat(a,a);
}
return t;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: