Guest User

Untitled

a guest
May 12th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.64 KB | None | 0 0
  1. def matrix_prod(A, B, m):
  2.     return [
  3.             [A[0][0]*B[0][0] % m + A[0][1]*B[1][0] % m, A[0][0]*B[0][1] % m + A[0][1]*B[1][1] % m],
  4.             [A[1][0]*B[0][0] % m + A[1][1]*B[1][0] % m, A[1][0]*B[0][1] % m + A[1][1]*B[1][1] % m]
  5.            ]
  6.  
  7. def matrix_pow(A, n, m):
  8.     if n == 1:
  9.         return A
  10.     if n % 2 == 0:
  11.         T = matrix_pow(A, n // 2, m)
  12.         return matrix_prod(T, T, m)
  13.     else:
  14.         T = matrix_pow(A, n // 2, m)
  15.         return matrix_prod(matrix_prod(T, T, m), A, m)
  16.  
  17. n, m = map(int, input().split())
  18. P = [[0,1],[1,1]]
  19. Pn = matrix_pow(P, n, m)
  20. res = matrix_prod([[0, 1],[0, 0]], Pn, m)
  21. print(res[0][0])
Advertisement
Add Comment
Please, Sign In to add comment