Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def matrix_prod(A, B, m):
- return [
- [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],
- [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]
- ]
- def matrix_pow(A, n, m):
- if n == 1:
- return A
- if n % 2 == 0:
- T = matrix_pow(A, n // 2, m)
- return matrix_prod(T, T, m)
- else:
- T = matrix_pow(A, n // 2, m)
- return matrix_prod(matrix_prod(T, T, m), A, m)
- n, m = map(int, input().split())
- P = [[0,1],[1,1]]
- Pn = matrix_pow(P, n, m)
- res = matrix_prod([[0, 1],[0, 0]], Pn, m)
- print(res[0][0])
Advertisement
Add Comment
Please, Sign In to add comment