第一题乘法矩阵快速幂加倍增,
倍增为预处理第二矩阵,
代码如下:
c[1][1]=(b[i-1][1][1]*b[i-1][1][1]%mod+b[i-1][1][2]*b[i-1][2][1]%mod+b[i-1][1][3]*b[i-1][3][1]%mod+b[i-1][1][4]*b[i-1][4][1]%mod)%mod;
c[1][2]=(b[i-1][1][1]*b[i-1][1][2]%mod+b[i-1][1][2]*b[i-1][2][2]%mod+b[i-1][1][3]*b[i-1][3][2]%mod+b[i-1][1][4]*b[i-1][4][2]%mod)%mod;
c[1][3]=(b[i-1][1][1]*b[i-1][1][3]%mod+b[i-1][1][2]*b[i-1][2][3]%mod+b[i-1][1][3]*b[i-1][3][3]%mod+b[i-1][1][4]*b[i-1][4][3]%mod)%mod;
c[1][4]=(b[i-1][1][1]*b[i-1][1][4]%mod+b[i-1][1][2]*b[i-1][2][4]%mod+b[i-1][1][3]*b[i-1][3][4]%mod+b[i-1][1][4]*b[i-1][4][4]%mod)%mod;
c[2][1]=(b[i-1][2][1]*b[i-1][1][1]%mod+b[i-1][2][2]*b[i-1][2][1]%mod+b[i-1][2][3]*b[i-1][3][1]%mod+b[i-1][2][4]*b[i-1][4][1]%mod)%mod;
c[2][2]=(b[i-1][2][1]*b[i-1][1][2]%mod+b[i-1][2][2]*b[i-1][2][2]%mod+b[i-1][2][3]*b[i-1][3][2]%mod+b[i-1][2][4]*b[i-1][4][2]%mod)%mod;
c[2][3]=(b[i-1][2][1]*b[i-1][1][3]%mod+b[i-1][2][2]*b[i-1][2][3]%mod+b[i-1][2][3]*b[i-1][3][3]%mod+b[i-1][2][4]*b[i-1][4][3]%mod)%mod;
c[2][4]=(b[i-1][2][1]*b[i-1][1][4]%mod+b[i-1][2][2]*b[i-1][2][4]%mod+b[i-1][2][3]*b[i-1][3][4]%mod+b[i-1][2][4]*b[i-1][4][4]%mod)%mod;
c[3][1]=(b[i-1][3][1]*b[i-1][1][1]%mod+b[i-1][3][2]*b[i-1][2][1]%mod+b[i-1][3][3]*b[i-1][3][1]%mod+b[i-1][3][4]*b[i-1][4][1]%mod)%mod;
c[3][2]=(b[i-1][3][1]*b[i-1][1][2]%mod+b[i-1][3][2]*b[i-1][2][2]%mod+b[i-1][3][3]*b[i-1][3][2]%mod+b[i-1][3][4]*b[i-1][4][2]%mod)%mod;
c[3][3]=(b[i-1][3][1]*b[i-1][1][3]%mod+b[i-1][3][2]*b[i-1][2][3]%mod+b[i-1][3][3]*b[i-1][3][3]%mod+b[i-1][3][4]*b[i-1][4][3]%mod)%mod;
c[3][4]=(b[i-1][3][1]*b[i-1][1][4]%mod+b[i-1][3][2]*b[i-1][2][4]%mod+b[i-1][3][3]*b[i-1][3][4]%mod+b[i-1][3][4]*b[i-1][4][4]%mod)%mod;
c[4][1]=(b[i-1][4][1]*b[i-1][1][1]%mod+b[i-1][4][2]*b[i-1][2][1]%mod+b[i-1][4][3]*b[i-1][3][1]%mod+b[i-1][4][4]*b[i-1][4][1]%mod)%mod;
c[4][2]=(b[i-1][4][1]*b[i-1][1][2]%mod+b[i-1][4][2]*b[i-1][2][2]%mod+b[i-1][4][3]*b[i-1][3][2]%mod+b[i-1][4][4]*b[i-1][4][2]%mod)%mod;
c[4][3]=(b[i-1][4][1]*b[i-1][1][3]%mod+b[i-1][4][2]*b[i-1][2][3]%mod+b[i-1][4][3]*b[i-1][3][3]%mod+b[i-1][4][4]*b[i-1][4][3]%mod)%mod;
c[4][4]=(b[i-1][4][1]*b[i-1][1][4]%mod+b[i-1][4][2]*b[i-1][2][4]%mod+b[i-1][4][3]*b[i-1][3][4]%mod+b[i-1][4][4]*b[i-1][4][4]%mod)%mod;
b[i][1][1]=c[1][1];
b[i][1][2]=c[1][2];
b[i][1][3]=c[1][3];
b[i][1][4]=c[1][4];
b[i][2][1]=c[2][1];
b[i][2][2]=c[2][2];
b[i][2][3]=c[2][3];
b[i][2][4]=c[2][4];
b[i][3][1]=c[3][1];
b[i][3][2]=c[3][2];
b[i][3][3]=c[3][3];
b[i][3][4]=c[3][4];
b[i][4][1]=c[4][1];
b[i][4][2]=c[4][2];
b[i][4][3]=c[4][3];
b[i][4][4]=c[4][4];