【发布时间】:2019-02-16 09:39:42
【问题描述】:
我得到数字 3 和一个变量“n”,它可以高达 1 000 000 000(十亿)。我必须打印3^n modulo 100003 的答案。我尝试了以下方法:
- 我尝试使用函数
std::pow(3,n),但它不适用于大指数(在此过程中无法应用模数)。 - 我尝试实现自己的函数,将数字 3 提高到 n 次方,以便在需要时应用模数,但在测试非常大的数字时,这种方法被证明太慢了。
-
最后,我尝试对数字“n”进行素数分解,然后使用“n”的因数(以及它们出现的次数)来构建答案,这似乎是我能想到的最佳方法(如果它是正确的)。问题是对于一个已经是素数的巨大数字我该怎么办?
所以这些是我的想法,如果有人认为有更好的方法(或者如果我的一种方法是最佳的),我将不胜感激。
【问题讨论】:
-
GMP.
标签: c++ arrays algorithm math integer-arithmetic