首页 > 代码库 > 方阵乘法、快速幂
方阵乘法、快速幂
1 #include<cstdio> 2 #include<cstring> 3 const int maxn = 100; 4 typedef struct{ 5 long long Mat[maxn][maxn]; 6 }MAT; 7 long long MOD,d; // d是方阵的行数或者列数 8 // 方阵的乘法,模MOD 9 MAT mul(MAT a,MAT b){10 MAT c;11 memset(c.Mat,0,sizeof(c.Mat));12 for(int i = 1 ; i <= d ; i++)13 for(int j = 1 ; j <= d ; j++)14 for(int k = 1 ; k <= d ; k++)15 c.Mat[i][j] = (c.Mat[i][j] + a.Mat[i][k] * b.Mat[k][j]) % MOD;16 return c;17 }18 // 方阵快速幂19 MAT Quick_pow(MAT a,long long b){20 MAT c; memset(c.Mat,0,sizeof(c.Mat));21 for(int i = 1 ; i <= d ; i++) c.Mat[i][i] = 1;22 while(b){23 if(b & 1) c = mul(c,a);24 a = mul(a,a);25 b >>= 1;26 }27 return c;28 }
方阵乘法、快速幂
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。