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

问题描述

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

enter image description here

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

(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 中,或者对于非负整数,都可以。)

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