C ++ Division with modulo

时间:2014-03-26 17:38:24

标签: c++ division modulo exponentiation

我想计算这个等式的结果

[(pow(4, p) - 1) / 3] % q

我写了一个函数pow,它返回4 mod q的p次幂,但我不能在这里应用它。 我该怎么做?

p,q是整数,可能很大 - 高达1 000 000 000。

提前致谢。

2 个答案:

答案 0 :(得分:3)

计算pow(4, p) - 13*q,并将结果除以3.要进行求幂,请使用Modular exponentiation算法。

编辑:这将为您提供整数除法(即舍入结果)。请参阅@ lisyarus关于整数模q的除法的答案。

如果q不能被3整除,则两个答案都应该给出相同的结果,因为pow(4, p) - 1总是可以被3整除,所以整数除法的舍入不会发挥作用。如果q可被3整除,则没有乘法逆,只能使用此方法。

答案 1 :(得分:3)

这取决于你的意思除以3.如果它是正常整数除法,似乎@interjay回答了这个问题。如果它是整数模p中的除以3,那么你应该找到3模p的倒数,如果存在的话。