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