struct mat //矩阵的定义
{
__int64 t[10][10];
void set()
{
memset(t,0,sizeof(t));
}
} a,b,c;
mat multiple(mat a,mat b,int n,int p) //矩阵相乘函数
{
int i,j,k;
mat temp;
temp.set();
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
if(a.t[i][j]!=0)
for(k=0; k<n; k++)
temp.t[i][k]=(temp.t[i][k]+a.t[i][j]*b.t[j][k]+p)%p;
}
return temp;
}
mat quick_mod(mat b,int n,int m,int p) //矩阵快速幂函数
{
mat t;
t.set();
for(int i=0;i<n;i++) t.t[i][i]=1;
while(m)
{
if(m&1)
{
t=multiple(t,b,n,p);
}
m>>=1;
b=multiple(b,b,n,p);
}
return t;
}
void init() //矩阵初始化函数
{
}
矩阵快速幂
最新推荐文章于 2025-06-01 00:01:08 发布