解题思路:
使用快速幂算法;
注意事项:
将原来快速幂算法中的乘法换成矩阵乘法,因此我们要先定义矩阵乘法。
参考代码:
n,m = map(int,input().split()) A = [list(map(int,input().split())) for i in range(n)] # 定义矩阵乘法 def mult_matrix(M,N): R = [[0]*len(N[0]) for i in range(len(M))] for a in range(len(M)): for b in range(len(N[0])): ans = 0 for i in range(len(M[a])): ans += M[a][i]*N[i][b] R[a][b] = ans return R # 定义矩阵快速幂 def quickpow(base, power): # 单位阵 res = [[0]*len(base[0]) for i in range(len(base))] for i in range(len(base)): res[i][i] = 1 # 快速幂算法 while power>0: if power & 1: res = mult_matrix(res,base) power >>= 1 base = mult_matrix(base,base) return res res = quickpow(A,m) for a in res: for b in a: print(b,end=' ') print()
0.0分
1 人评分
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:796 |
【出圈】 (C语言代码)用单项循环链表浏览:841 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:773 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:575 |
不会做的浏览:954 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:1052 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:751 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:570 |
模拟计算器 (C++代码)浏览:885 |
大神老白 (C语言代码)浏览:637 |