Python 40分求助,写个快速幂6个TIE
查看原帖
Python 40分求助,写个快速幂6个TIE
841511
Gaomer楼主2023/4/29 16:57
def matrix_multiply(A, B):
    if len(A[0]) != len(B):
        print('range error')
        return
    n = len(A)
    m = len(A[0])
    k = len(B[0])
    res = [[] for _ in range(n)]
    for i in range(n):
        for j in range(k):
            ans = 0
            for q in range(m):
                ele = A[i][q] * B[q][j] % 1000000007
                ans = (ans + ele) % 1000000007
            res[i].append(ans)
    return res

def matrix_fast_pow(A, k):
    res = [[0] * len(A) for _ in range(len(A))]
    for i in range(len(A)):
        res[i][i] = 1
    while k:
        if k & 1:
            res = matrix_multiply(res, A)
        k >>= 1
        A = matrix_multiply(A, A)
    return res

n, k = map(int, input().split())
getm = [[] for _ in range(n)]
for i in range(n):
    a = list(map(int, input().split()))
    for j in a:
        getm[i].append(j)
ans = matrix_fast_pow(getm, k)
for i in range(n):
    for j in range(n):
        print(ans[i][j], end=' ')
    print(' ')
2023/4/29 16:57
加载中...