题目描述:
给定n组除数Mi和余数Ri (1≤i≤n, Ri<Mi), 定义方程组如下:x % M1 = R1
x % M2 = R2
x % M3 = R3
...
x % Mn = Rn
求解满足以上方程组的x的最小正整数解。
解答:
题目中定义的方程组称为“模线性方程组”,我们可以采用一种迭代的方式进行求解。
·基本情况:
首先考虑方程组中只包含2个方程的情况:
x % M1 = R1..................................................(F1)
x % M2 = R2..................................................(F2)
假设: x = k1 * M1 + R1, x = k2 * M2 + R2,此时:
k1 * M1 + R1 = k2 * M2 + R2
=> k1 * M1 - k2 * M2 = R2 - R1..................................(T)
M1, M2, R1, R2 都是已知的常数,这样就得到了一个以k1, k2为未知数的二元一次方程。此时,只要找到(T)式的一组整数解,然后代入,就可以找到满足由方程(F1) 和 (F2)的一个x解。
求解(iii)式的过程可以利用拓展欧几里得算法。 简要说明其步骤如下:
记:A = M1, B = M2, C = R2 - R1, x = k1, y = k2那么方程(iii)就可以抽象为