rt,想重载一下矩阵的 [],然后疯狂报错,为什么?
struct Matrix
{
mint M[3][3];
Matrix(){memset(M,0,sizeof(M));}
void reset(){memset(M,0,sizeof(M));for(int i=1;i<=L;i++)M[i][i]=1;}
mint *operator [](int x){return M[x];}
Matrix friend operator +(const Matrix A,const Matrix B)
{
Matrix res;
for(int i=1;i<=L;i++)
for(int j=1;j<=L;j++)
res[i][j]=A[i][j]+B[i][j];
return res;
}
Matrix friend operator *(const Matrix A,const Matrix B)
{
Matrix res;
for(int i=1;i<=L;i++)
for(int j=1;j<=L;j++)
for(int k=1;k<=L;k++)
res.M[i][j]=A.M[i][k]*B.M[k][j];
return res;
}
Matrix friend operator ^(Matrix a,int b)
{
Matrix res;res.reset();
for(;b;b>>=1){if(b&1)res=a*res;a=a*a;}
return res;
}
}t[N<<2],fib;