CRT Chinese Remainder Theorem
互いに素な$m, n$について $x \equiv a \pmod{m}, x \equiv b \pmod{n}$ の時、 $x \equiv c \pmod{mn}$ を満たす$0 \le c < ab$ がただ一つ存在する。
解の存在
def crt(a, m, b, n):
"""
Find x s.t. x % m == a and x % n == b
>>> crt(2, 3, 1, 5)
11
>>> crt(1, 4, 3, 6)
9
"""
x, y, g = extended_euclidean(m, n)
if g == 1:
return (b * m * x + a * n * y) % (m * n)
s = (b - a) // g
return (a + s * m * x) % (m * n // g)
解の一意性などはこちら