题目描述
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如:
A =
1 2
3 4
A的2次幂
7 10
15 22
输入
第一行是一个正整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数 。
接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 。
输出
输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
样例输入
2 2 1 2 3 4
样例输出
7 10 15 22
解决:三层循环矩阵乘法
n, m = map(int, input().split())
A = []
for i in range(n):
row = [int(j) for j in input().split()]
A.append(row)
if m == 0: # 零次幂,单位矩阵
for i in range(n):
for j in range(n):
if i==j:
print(1, end=' ')
else:
print(0, end=' ')
print()
else:
mul = A
mul_t = A # 用于保存当前次循环的结果矩阵
while m:
mul = mul_t
mul_t = [[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
for k in range(n):
mul_t[i][j] += mul[i][k] * A[k][j]
m = m - 1
for i in range(n):
for j in range(n):
print(mul[i][j], end=' ')
print()
注意:矩阵的零次幂为单位矩阵