为大N计算2 ^ n

时间:2013-11-03 16:51:14

标签: c++ algorithm

我想用N的大值计算2 ^ N,即用mod操作计算高达10 ^ 9。 使用迭代方法,但是输入10 ^ 8需要花费大量时间。

for(long i=1;i<=n;i++){ res=(res*2)%1000000007 }

花费时间计算n = 10 ^ 8及以上。

1 个答案:

答案 0 :(得分:0)

您可以通过平方以及乘以2来提高速度 - 例如可以达到2 ^ 4,因为2 * 2 =&gt; 4,4 * 4 =&gt; 16。

从2开始。如果N是偶数,则取平方所得并将N减半。如果N为奇数,则乘以2并递减N.随时应用模数。

您可能必须小心平方不会溢出。