【问题标题】:How to calculate a**b when a and b both are very large(in order of 10**10 to 10**18)? [duplicate]当 a 和 b 都很大时(按 10**10 到 10**18 的顺序),如何计算 a**b? [复制]
【发布时间】:2019-01-16 15:44:29
【问题描述】:

我需要计算((2**a)*(a))%1000000007,其中 a 的数量级为 10^10。据我所知,python 可以处理小于 2^1400 的 int。那么有没有办法计算这个?或任何数学规则来解决它?

【问题讨论】:

标签: python


【解决方案1】:

这变得非常容易,因为 python 的 math.pow 有一个模数的可选参数。

from math import pow
(pow(2, a, 1000000007)*a)%1000000007

这让您不必对所有数字执行2**a,而只需返回模数。

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2016-04-27
    • 2015-12-19
    • 2011-01-06
    相关资源
    最近更新 更多