typedef vector<ll> vec;
typedef vector<vec> mat;
const int mod=1e9+7;
mat mul(mat &A,mat &B){
mat C(A.size(),vec(B[0].size()));
for(int i=0;i<(int)A.size();i++)
for(int k=0;k<(int)B.size();k++)
for(int j=0;j<(int)B[0].size();j++)
C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mod;
return C;
}
mat pow(mat A,ll n){
mat B(A.size(),vec(A.size()));
for(int i=0;i<(int)A.size();i++)
B[i][i]=1;
while(n>0){
if(n&1) B=mul(B,A);
A=mul(A,A);
n>>=1;
}
return B;
}
矩阵快速幂模板
最新推荐文章于 2022-08-27 21:03:02 发布