BASIC-17 基础练习 矩阵乘法

题目描述

给定一个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()

注意:矩阵的零次幂为单位矩阵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44645726

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值