Python写简单的整数快速幂和矩阵快速幂

这篇博客介绍了如何使用Python高效地实现整数快速幂和矩阵快速幂,以解决在计算中可能遇到的超时问题。提供的代码简单易懂,可供后续参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常会遇到求幂,按照常规操作,就会超时,现在写两个简单的整数快速幂和矩阵快速幂供自己以后参考。

整数快速幂:
def quickPow(a,n):
    res = 1
    while(n):
        if n%2 != 0:
            res *= a
        a *= a          #翻倍
        n >>= 1         #二进制右移一位
    return res

a,n = map(int,input().split())
print(quickPow(a,n))
矩阵快速幂:
#以2x2矩阵相乘为例
m = [[1 for i in range(2)]for j in range(2)]
m[1][1] = 0
n = int(input())

def mulMatrix(x,y):     #定义二阶矩阵相乘的函数
    ans = [[0 for i in range(2)]for j in range(2)]
    for i in range(2):
        for j in range(2):
            for k in range(2):
                ans[i][j] += x[i][k] * y[k][j]
    return ans

def quickMatrix(m,n):
    E = [[0 for i in range(2)]for j in range(2)]        #先定义一个单位矩阵
    for i in range(2):
        E[i][i] = 1
    while(n):
        if n % 2 != 0:
            E = mulMatrix(E,m)
        m = mulMatrix(m,m)
        n >>= 1
    return E
print(quickMatrix(m,n))

矩阵快速幂思想和整数快速幂一样,只不过要多定义一个矩阵乘法的例子,我的代码里面给的比较简单,可以参考个思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值