蓝桥杯-基础练习VIP-矩阵乘法-python

蓝桥杯-基础练习VIP-矩阵乘法-python

问题描述

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

Python代码

n, m = map(int, input().split())
arr = [list(map(int, input().split()))for _ in range(n)]
xx=[[] for i in range(n)]
def multi(res, arr, m):
    c=[[] for i in range(n)]
    if m == 1:
        return res
    else:
        for i in range(n):
            lst1 = []
            lst1=[res[i][x] for x in range(n)]
            for j in range(n):
                lst2 = []
                lst2=[arr[y][j] for y in range(n)]
                sum = 0
                for z in range(n):
                    sum += (lst1[z]*lst2[z])
                c[i].append(sum)           
        res = multi(c, arr, m-1)
        return res
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:
    res = arr
    xx=multi(res, arr, m)
    for i in range(n):
        for j in range(n):
            print(xx[i][j], end=' ')
        print('')
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值