如何计算指数大的数
How to calculate numbers with large exponents
我正在编写一个程序,我需要计算非常大的数字。
k = int(input())
print(int((2**k)*5 % (10**9 + 7))
这里,k是109的数量级
正如预期的那样,这相当慢(计算最多需要 5 秒),而我的程序需要在 1 秒内完成计算。
在网上做了一些研究后,我发现了一个函数 pow(),然后写成
p = 10**9 + 7
print(int(pow(2, k- 1,p)*10))
这适用于小数字但在大数字时会搞砸。我能理解为什么会这样(因为这本质上不是我想要计算的,而且如此大的模数运算不会影响小 k 值的计算)。
我还找到了像 gmpy2 和 numpy 这样的库,但我不知道如何使用它们,因为我只是 python 的初学者。
那么,如何为我想要计算的内容编写一个表达式,该表达式运行速度足够快并且不会在大数时出错?
您可以通过将要取模的数字作为内置函数 pow 的第三个参数传递并将结果乘以 5
来优化您的操作
def func(k):
x = pow(2, k, pow(10,9) + 7) * 5
return int(x)
我正在编写一个程序,我需要计算非常大的数字。
k = int(input())
print(int((2**k)*5 % (10**9 + 7))
这里,k是109的数量级 正如预期的那样,这相当慢(计算最多需要 5 秒),而我的程序需要在 1 秒内完成计算。 在网上做了一些研究后,我发现了一个函数 pow(),然后写成
p = 10**9 + 7
print(int(pow(2, k- 1,p)*10))
这适用于小数字但在大数字时会搞砸。我能理解为什么会这样(因为这本质上不是我想要计算的,而且如此大的模数运算不会影响小 k 值的计算)。
我还找到了像 gmpy2 和 numpy 这样的库,但我不知道如何使用它们,因为我只是 python 的初学者。
那么,如何为我想要计算的内容编写一个表达式,该表达式运行速度足够快并且不会在大数时出错?
您可以通过将要取模的数字作为内置函数 pow 的第三个参数传递并将结果乘以 5
来优化您的操作def func(k):
x = pow(2, k, pow(10,9) + 7) * 5
return int(x)