如何计算指数大的数

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)