首页 > 代码库 > 矩阵快速幂模板
矩阵快速幂模板
//矩阵快速幂模板 #include<iostream> #include<iomanip> #include<cstring> #include<stdio.h> #include<map> #include<cmath> #include<algorithm> #include<vector> #include<stack> #include<fstream> #include<queue> #define rep(i,n) for(int i=0;i<n;i++) #define fab(i,a,b) for(int i=(a);i<=(b);i++) #define fba(i,b,a) for(int i=(b);i>=(a);i--) #define MP make_pair #define PB push_back using namespace std; const int N=15; struct ma{ int row,col; int a[N][N]; ma operator*(const ma& other){ ma res; res.row=row; res.col=other.col; rep(i,row){ rep(j,other.col){ res.a[i][j]=0; rep(k,col){ res.a[i][j]+=a[i][k]*other.a[k][j]; } } } return res; } }; ma pow_ma(const ma& x,int n){ ma base=x,res; rep(i,x.row){ rep(j,x.col){ if(i==j)res.a[i][j]=1; else res.a[i][j]=0; } } while(n){ if(n&1)res=res*base; base=base*base; n>>=1; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。