Algorithm/boj

[파이썬] 10830 행렬 제곱

takeU 2022. 5. 26. 14:27
반응형
def power(c, n):
    if n == 1:
        return c
    elif n % 2:
        return multi(power(c, n - 1), c)
    else:
        return power(multi(c, c), n // 2)

def multi(a,b):
    temp = [[0] * n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            sum = 0
            for k in range(n):
                sum += a[i][k] * b[k][j]
            temp[i][j] = sum % 1000
    return temp

n, b = map(int, input().split())
c = [list(map(int, input().split())) for _ in range(n)]
ans = power(c, b)

for a in ans:
    print(*map(lambda x: x % 1000, a))

분할정복