为非常大的A和B计算(A pow B)mod M(存储在字符串中)

时间:2017-08-02 10:43:24

标签: modular-arithmetic

问题的链接: https://www.hackerearth.com/problem/algorithm/rhezo-and-big-power/description/ 我看到了这个人计算A%M的最佳提交(就像我们在纸上做的那样)和B%(M-1);然后这两个进入整数范围,他做log(n)方法找到m ^ n%M? 我无法理解为什么他会做B%(M-1)。

1 个答案:

答案 0 :(得分:2)

根据费马的小定理,

a^(p-1) mod p = 1, When p is prime.

由此,在问题中,M是素数,我们可以表达A ^ B mod M如下,

A^B mod M = ( A^(M-1) * A^(M-1) *.......* A^(M-1) * A^(x) ) mod M

x is B mod M-1 and A ^ (M-1) continues B/(M-1) times

现在,根据费马的小定理,A ^ (M-1) mod M = 1.

因此,

A^B mod M = ( 1 * 1 * ....... * 1 * A^(x) ) mod M

这就是为什么我们使用M-1

来模拟B.