我正在编写一个程序,需要计算出巨大的数字。
k = int(input())
print(int((2**k)*5 % (10**9 + 7))
在这里,k为10 9 的数量级 正如预期的那样,这相当慢(最多需要5秒钟进行计算),而我的程序需要在1秒内完成计算。 在网上进行了一些研究之后,我发现了一个函数pow(),并通过编写
p = 10**9 + 7
print(int(pow(2, k- 1,p)*10))
这对于少量数字效果很好,但对大量数字会造成混乱。我能理解为什么会这样(因为这本质上不是我想要计算的,并且具有如此大的数量的模运算不会影响具有小k值的计算)。
我还找到了gmpy2和numpy之类的库,但我不知道如何使用它们,因为我只是python的初学者。
那么我该如何为要计算的表达式写一个表达式,该表达式的运行速度足够快,并且不会大量出错呢?
答案 0 :(得分:2)
您可以通过将要从中获取模数的数字作为内置pow的第三个参数,并将结果乘以5,来优化操作
def func(k):
x = pow(2, k, pow(10,9) + 7) * 5
return int(x)