解题思路:
使用快速幂算法;
注意事项:
将原来快速幂算法中的乘法换成矩阵乘法,因此我们要先定义矩阵乘法。
参考代码:
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 人评分
【金明的预算方案】 (C++代码)浏览:843 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:591 |
用筛法求之N内的素数。 (C语言代码)浏览:666 |
杨辉三角 (C语言代码)浏览:484 |
剪刀石头布 (C++代码)浏览:1712 |
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:617 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:720 |
众数问题 (C语言代码)浏览:630 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:359 |