在各种模恒等式中,减法恒等式指出:
(a - b) % c = (a % c - b % c) % c
但是如果我看这个例子,a = 508, b = 201 and c = 101
,我使用恒等式得到的答案是否定的,这是不正确的。我在 c++ 中的程序使用大数的阶乘(不是从 1 开始,而是从用户给定的输入到另一个数字(模10^9 + 7
减去另一个阶乘数(小于第一个值(mod10^9 + 7
但我得到负值,或者在使用无符号长长长时溢出。
是否有任何可能的实现来获得正确的输出?
是的。我想它应该如下
((a%c - b%c) % c + c) % c
如果a = 12
,b = 7
并c = 10
则(a%c - b%c)%c
将给出 -5 然后添加c
并再次修改它将导致 5 这是正确答案