其他分享
首页 > 其他分享> > 快速幂和快速乘

快速幂和快速乘

作者:互联网

快速幂运算

求a的b次幂,不能用幂运算

思路:a^b    把b看成二进制,b从最低为开始看 b = (0/1)*2^0+ (0/1)*2^1+ (0/1)*2^2

也就是说b的某一位是1,如果该位位第n低位,则需要乘上a^n

 

快速乘也是同样道理

求a*b    加上 a^n

 

def exponential_calculation(a,b):
ans = 1
while b:
if b&1: # 最低位是否为1 二进制
ans *= a
a *= a
b >>= 1 # b 移位
return ans

print(exponential_calculation(3, 3))


def mul_calculation(a,b):
ans = 0
while b:
if b&1: # 最低位是否为1 二进制
ans += a
a += a
b >>= 1 # b 移位
return ans

print(mul_calculation(3, 10))


标签:return,ansprint,calculation,二进制,ans,mul,快速
来源: https://www.cnblogs.com/BetterThanEver_Victor/p/16299765.html