我知道这可能看起来像是一个数学问题,但我只是在比赛中看到了这一点,我真的想知道如何解决它。
我们有
a(mod c)
和
b(mod c)
我们正在寻找商数值
(a / b)(mod c)
有什么想法吗?
答案 0 :(得分:18)
在模C
的整数环中,这些等式是等价的:
A / B (mod C)
A * (1/B) (mod C)
A * B
-1(mod C)
。
因此,您需要找到B
-1 ,B
模C
的乘法逆。您可以使用例如扩展欧几里德算法。
请注意,并非每个数字都具有给定模数的乘法反转。
具体而言,B
-1 存在且仅当gcd(B, C) = 1
(即B
和C
是互质的时候)。
假设我们想要找到3模11的乘法逆。
也就是说,我们想找到
x = 3
-1(mod 11)
x = 1/3 (mod 11)
3x = 1 (mod 11)
使用扩展的欧几里得算法,你会发现:
x = 4 (mod 11)
因此,3模11的模乘法逆是4.换句话说:
A / 3 == A * 4 (mod 11)
解决此问题的一种方法:
3x = 1 (mod 11)
只需针对所有值x
尝试0..11
,并查看等式是否成立。对于小模数,这个算法可能是可以接受的,但扩展欧几里德算法渐近更好。
答案 1 :(得分:-1)
可能有很多答案。当你拥有的是k = B mod C时,B可以是所有整数N的任何k + CN。
这意味着B可能非常大。事实上,如此大,使A / B接近零。
但是,这只是一种回应方式。
答案 2 :(得分:-4)
我认为它可以写成(但不确定)
(a/b)%c = ((a)%(b*c))/b