Example #1
0
 Mat operator + (Mat b) {
     int i, j;
     Mat c;
     c.sz = sz;
     c.clr();
     for (i = 0; i < sz; i++)
         for (j = 0; j < sz; j++)
             c.mat[i][j] = ((LL) mat[i][j] + b.mat[i][j]) % MOD;
     return c;
 }
Example #2
0
 Mat operator - (Mat b) {
     int i, j;
     Mat c;
     c.sz = sz;
     c.clr();
     for (i = 0; i < N; i++) {
         for (j = 0; j < N; j++)
             c.mat[i][j] = mat[i][j] - b.mat[i][j];
     }
     return c;
 }
Example #3
0
 Mat operator * (Mat b) {
     int i, j, k;
     Mat c;
     c.sz = sz;
     c.clr();
     for (i = 0; i < sz; i++) {
         for (k = 0; k < sz; k++) {
             if (mat[i][k] == 0) continue;
             for (j = 0; j < sz; j++) {
                 if( b.mat[k][j] == 0) continue;
                 c.mat[i][j] = ((LL) mat[i][k] * b.mat[k][j] + c.mat[i][j]) % MOD;
             }
         }
     }
     return c;
 }