问题描述
今天我试图解决一个涉及模算术的问题。我无法解决它。所以我在 Geeks for Geeks 上查了一下
上图显示了作者所做的。我知道两个数的模加法
(a + b) % m = (a % m + b % m) % m
这适用于 a 和 b
的任何正值当我考虑作者在图像中使用的公式时。
a % k + b % k = 0
我为 a 、 b 和 k 替换了一些随机值,看看它是否真的有效。事实证明,对于输入值 a = 2,b = 5 和 k = 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、c 和 k
的任何正值在等式中,
(a + b) % k = (a % k + b % k) % k
我可以忽略最后一个 k 并继续扩展 (a + b) % k 吗?。我想知道最后一个 k 的缺失如何不影响最终结果
解决方法
不,a = b = 0
是一个反例。
确实,最终公式是不正确的,假设 %
表示截除的余数。让 a = 1
和 b = -1
。 (在 Python 中,或者对于非负整数,都可以。)
这就是为什么数学家更喜欢处理等价模 K
,这样可以避免将模运算符放在哪里的问题。