【发布时间】:2013-11-17 04:38:47
【问题描述】:
我有两个数字 A 和 B
其中 A 和 B 的范围可以是 1
我们如何在 C++ 中找到 A^B 模数 M 的值??
【问题讨论】:
-
您需要使用任意精度的算术库。 Boost 和 OpenSSL 都有实现。如果您环顾四周,其他人也可以使用。
-
这里唯一重要的一点是 M 的边界是多少。M 可以放入 32/64 位整数吗?如果 M 是素数,则有一个简单的解决方案,对于所有其他 M 来说稍微复杂一点。
-
A和B可以写成p^q(p,q整数)吗?否则,您将需要任意精度库(您可能有 200,000 位数字......)。我在下面的答案中复制的技巧不起作用。
标签: c++ exponent largenumber