a,b,c, k 为整数,0<=a,b,c<10, k>0 ,且 c=[k(a-b+10)]%10,a=?
如果我知道k,b,c的值,如何计算a的值?
是否可以用k,b,c的表达式来表示a的值。
不知道有没有什么通用的公式可以解决这类问题?
只需解决
a
:
k * (a - b + 10) ≡ c (mod 10) # original
k * (a - b) + 10 * k ≡ c (mod 10) # distribute the k
k * (a - b) ≡ c (mod 10) # 10 times anything mod 10 is congruent to zero
k * (a - b) - c ≡ 0 (mod 10) # subtract c from both sides
-k^(-1) * (k * (a - b) - c) ≡ 0 (mod 10) # multiply both sides by -k^(-1) i.e. the negative inverse of k mod 10
-k^(-1) * k * (a - b) + k^(-1) * c ≡ 0 (mod 10) # distribute -k^(-1)
-1 * (a - b) + k^(-1) * c ≡ 0 (mod 10) # cancel k^(-1) with k
-a + b + k^(-1) * c ≡ 0 (mod 10) # distribute -1
b + k^(-1) * c ≡ a (mod 10) # add a to both sides
这取决于
k
模 10 的乘法逆元的存在,仅当 k
与 10 互质时才存在。您可以使用 扩展欧几里德 计算
k^(-1)
(k mod 10 的乘法逆元)算法.
在Python中,这看起来像:
from math import gcd
def solve(b, c, k):
assert gcd(k, 10) == 1 # assert k is coprime to 10
return (b + pow(k, -1, 10) * c) % 10