我可以在扩展 (a + b) % k 时忽略最后一个 k 吗?

Can I ignore the last k while expanding (a + b) % k?

今天我试图解决一个涉及模运算的问题。我无法解决它。所以我在 Geeks for Geeks

上查找了它

上图展示了作者的所作所为。我知道两个数的模加法

(a + b) % m = (a % m + b % m) % m

这适用于 ab

的任何正值

当我考虑作者在图片中使用的等式时。

a % k + b % k = 0

我用 abk 替换了一些随机值,看看它是否真的有效。事实证明,输入值 a = 2、b = 5k = 7.

失败

2%7+5%7=7≠0

当我考虑最后一个方程时。成功了。

b % k = (k - a % k) % k

(5 % 7) = (7 - 2 % 7) % 7

5 % 7 = 5 % 7

(a + b) % k = c

当我用和作者一样的思路求解上面的方程时,得到了

(a + b) % k = c

a % k + b % k = c

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

它适用于 a、b、ck

的任何正值

等式中,

(a + b) % k = (a % k + b % k) % k

我可以忽略最后一个 k 并继续扩展 (a + b) % k 吗?我想知道最后 k 的缺席如何不影响最终结果

不是,a = b = 0是反例

确实,最后的公式是错误的,假设%表示截断除法的余数。让a = 1b = -1。 (在 Python 中,或者对于非负整数,没问题。)

这就是为什么数学家更喜欢处理等价 mod K,这避免了 mod 运算符放在哪里的问题。