使用恒等式减去模数

Modulo in Subtracting using identities

在各种 modulo 恒等式中,减法恒等式指出:

(a - b) % c = (a % c - b % c) % c

但是如果我看一下 a = 508, b = 201 and c = 101 这个例子,我使用身份得到的答案是否定的,这是不正确的。我在 C++ 中的程序使用大数的阶乘(不是从 1 开始,而是从用户给定的输入到另一个数字)modulo 10^9 + 7 减去另一个阶乘数(小于第一个值)mod 10^9 + 7 但我得到负值,或者在使用 unsigned long long 时溢出。

是否有任何可能的实现来获得正确的输出?

是的。我猜应该是这样的

((a%c - b%c) % c + c) % c

如果 a = 12b = 7c = 10 那么 (a%c - b%c)%c 会给出 -5 然后再次添加 c 和 mod 将得到 5,这是正确答案