Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- sys.setrecursionlimit(10000)
- n = int(input())
- ta, tb, tc = [int(_) for _ in input().split()]
- pa, pb, pc = [int(_) for _ in input().split()]
- base_matrix = [
- [pa - 2, 1, 1],
- [1, pb - 2, 1],
- [1, 1, pc - 2],
- ]
- unit_matrix = [
- [1, 0, 0],
- [0, 1, 0],
- [0, 0, 1],
- ]
- MOD = 10**9 + 7
- i = 0
- def mul_matrix(matrix_1, matrix_2):
- result_matrix = [[0]*len(matrix_2[0]) for _ in range(len(matrix_1))]
- for a in range(len(matrix_1)):
- for b in range(len(matrix_2[0])):
- s = 0
- for c in range(len(matrix_1[0])):
- s += matrix_1[a][c] * matrix_2[c][b]
- result_matrix[a][b] = s
- return result_matrix
- def mod_matrix(matrix, mod):
- for i in range(len(matrix)):
- for j in range(len(matrix[i])):
- matrix[i][j] %= mod
- return matrix
- 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 mod_matrix(mul_matrix(mul_matrix(pow_2, pow_2), base_matrix), MOD)
- else:
- return mod_matrix(mul_matrix(pow_2, pow_2), MOD)
- t_matrix = [
- [ta],
- [tb],
- [tc],
- ]
- res_matrix = mul_matrix(pow_matrix(n), t_matrix)
- res_matrix = mod_matrix(res_matrix, MOD)
- print(res_matrix[0][0], res_matrix[1][0], res_matrix[2][0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement