使用恒等式减去模数
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 = 12
、b = 7
和 c = 10
那么
(a%c - b%c)%c
会给出 -5
然后再次添加 c
和 mod 将得到 5,这是正确答案
在各种 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 = 12
、b = 7
和 c = 10
那么
(a%c - b%c)%c
会给出 -5
然后再次添加 c
和 mod 将得到 5,这是正确答案