Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- n = int(input())
- ta, tb, tc = [int(_) for _ in input().split()]
- pa, pb, pc = [int(_) for _ in input().split()]
- base_matrix = np.array(
- [
- [pa - 2, 1, 1],
- [1, pb - 2, 1],
- [1, 1, pc - 2],
- ],
- dtype="object",
- )
- unit_matrix = np.array(
- [
- [1, 0, 0],
- [0, 1, 0],
- [0, 0, 1],
- ],
- dtype="object",
- )
- MOD = 10**9 + 7
- def pow_matrix(n):
- if n == 0:
- return unit_matrix
- elif n == 1:
- return base_matrix
- else:
- pow_2 = pow_matrix(n // 2)
- if n & 1:
- return np.dot(np.dot(pow_2, pow_2), base_matrix) % MOD
- else:
- return np.dot(pow_2, pow_2) % MOD
- t_matrix = np.array(
- [
- [ta],
- [tb],
- [tc],
- ],
- dtype="object",
- )
- res_matrix = np.dot(pow_matrix(n), t_matrix)
- print(*res_matrix)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement