矩阵定义:用结构体表示
struct node
{
int a[5][5];
node()
{
memset(a,0,sizeof(a));
}
};
矩阵相乘:最暴力方式
node mul(node x,node y,int n,int k,int m)
{
node z;
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
for(int t=0; t<k; t++)
{
z.a[i][j] += (x.a[i][t])*(y.a[t][j]);
}
z.a[i][j]%= 10007;
}
}
return z;
}
矩阵快速幂运算
//cnt 表示矩阵的幂 x 表示原始矩阵 I 表示单位矩阵
node qmul(node x,int cnt)
{
node I;
setNodeI(I);
while(cnt>=1)
{
if(cnt%2) I = mul(I,x,4,4,4);
x = mul(x,x,4,4,4);
cnt = cnt>>1;
}
return I;
}