Advertisement
Matrix_code

math - Matrix multiplication simple

Feb 11th, 2021 (edited)
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. using Mat = vector<vector<ll>>;
  2. Mat mul(Mat &A, Mat &B) {
  3.     int r = (int)A.size(), c = (int)B[0].size();
  4.     Mat C(r, vector<long long>(c));
  5.     for (int i = 0; i < r; i++)
  6.         for (int j = 0; j < c; j++) {
  7.             ll v = 0;
  8.             for (int k = 0; k < c; k++) v = (v + A[i][k] * B[k][j]) % mod;
  9.             C[i][j] = v;
  10.         }
  11.     return C;
  12. }
  13.  
  14. Mat exp(Mat &A, long long e) {
  15.     int r = (int)A.size(), c = (int)A[0].size();
  16.     Mat C(r, vector<long long>(c));
  17.     for(int i = 0; i < r; i ++) C[i][i] = 1;
  18.  
  19.     Mat B = A;
  20.     while (true) {
  21.         if (e & 1) C = mul(C, B);
  22.  
  23.         e >>= 1;
  24.         if (e == 0) break;
  25.         B = mul(B, B);
  26.     }
  27.     return C;
  28. }
  29.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement