1 const int maxn=65; 2 struct Matrix 3 { 4 int n,m[maxn][maxn]; 5 void init(int sz) 6 { 7 memst(m,0,sizeof(m)); 8 n=sz; 9 } 10 Matrix(int sz=0){init(sz);} 11 void setE() 12 { 13 for(int i=0;i<n;i++) m[i][i]=1; 14 } 15 Matrix operator* (const Matrix &a) 16 { 17 Matrix ans(n); 18 for(int k=0;k<n;k++) 19 for(int i=0;i<n;i++) 20 for(int j=0;j<n;j++) 21 ans.m[i][j]=ans.m[i][j]+m[i][k]*a.m[k][j]; 22 return ans; 23 } 24 };