Advertisement
Morass

matrix power

Feb 11th, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.51 KB | None | 0 0
  1. #define MM (101)
  2. void mul(int A[MM][MM],int B[MM][MM],int R[MM][MM],int W,int M){
  3.     F(W)FF(W)R[i][j]=0;
  4.     F(W)FF(W){
  5.         ll D=M*1ll*M,S=0;;
  6.         FT(0,W)if((S+=A[i][k]*1ll*B[k][j])>=D)S-=D;
  7.         R[i][j]=S%M;
  8.     }
  9. }
  10. void pw(int M[MM][MM],int R[MM][MM],int W,ll k,int MD){
  11.     static int E[MM][MM],H[MM][MM];
  12.     F(W)FF(W)R[i][j]=E[i][j]=i==j;
  13.     while(k){
  14.         if(k&1)mul(E,M,R,W,MD),memcpy(E,R,sizeof(E));
  15.         mul(M,M,H,W,MD);
  16.         memcpy(M,H,sizeof(H));
  17.         k>>=1;
  18.     }
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement