1. 程式人生 > >矩陣快速冪 模板

矩陣快速冪 模板

AI class nbsp continue cin ast std OS 矩陣快速冪

在矩陣快速冪中要註意可以把兩個矩陣化為同大小的時候運算

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

const int MAX_N=62;
int n;

struct JuZhen
{
    int m[MAX_N][MAX_N];
}a,b;

JuZhen Mul(JuZhen x,JuZhen y)
{
      JuZhen sum;
      memset(sum.m,0,sizeof(sum.m));
      for(int
k=0;k<n;k++) { for(int i=0;i<n;i++) { if(!x.m[i][k]) continue; for(int j=0;j<n;j++) { sum.m[i][j]=(sum.m[i][j]+x.m[i][k]*y.m[k][j]); } } } return sum; } JuZhen fastm(JuZhen a,
int b) { JuZhen s; memset(s.m,0,sizeof(s.m)); for(int i=0;i<n;i++) { s.m[i][i]=1; } while(b) { if(b&1) s=Mul(s,a); a=Mul(a,a); b=b>>1; } return s; } int main() { memset(a.m,0,sizeof(b.m)); memset(b.m,0,sizeof
(b.m)); cin>>n; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>a.m[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>b.m[i][j]; } } }

矩陣快速冪 模板