提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、快速幂算法(概述)
①快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。
②快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。
③快速幂可以用位运算来实现,python实现为:
b & 1 #取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶
b >> 1 #把b的二进制右移一位,即去掉其二进制位的最低位
二、整数快速幂(源码)
'''
首先,幂数会被表示为二进制系数,
其位数即为结果的项的个数,最后某项是否被乘进去需要看此项的系数是否为1,若为0则
'''
x=int(input())
n=int(input())
def quick_power(x, n):
# 特殊情况
if n == 0:
return 1
# 递归过程的最后一层
elif n == 1:
return x
# 如果幂的值为偶数, 则 不 进行记录,传给下一层
else:
y=quick_power(x,n//2)#递下去
print(y)
if(n&1):#n的末位是不是1
return (y**2)*x
return(y**2)
print(quick_power(x, n))
三、矩阵快速幂(源码)
跟整数快速幂一样,但是平方需要重写一个矩阵乘法的函数,如果有取模的需要也应该在此函数中体现。此处举例模99999999,代码如下:
##矩阵快速幂算法(递归法
def matrix_mul