typedef struct
{
int m[maxn][maxn];
}Matrax;
Matrax a,per;
int n,M;
void init()
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
scanf("%d",&a.m[i][j]);
a.m[i][j]%=M;
per.m[i][j]=(i==j);
}
}
Matrax multi(Matrax a,Matrax b)
{
Matrax c;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
c.m[i][j]=0;
for(int k=0;k<n;k++)
c.m[i][j]+=a.m[i][j]*b.m[i][j];
c.m[i][j]%=M;
}
return c;
}
Matrax power(int k)
{
Matrax c,p,ans=per;
p=a;
while(k){
if(k&1)
ans=multi(ans,p);
k>>=1;
p=multi(p,p);
}
return ans;
}
矩阵快速幂(模板)
猜你喜欢
转载自blog.csdn.net/qq_40679299/article/details/80314290
今日推荐
周排行