扩展中国剩余定理(ExCRT)可以解决一次线性同余方程组的问题。
扩展中国剩余定理
现有关于 x x x的一次同余方程组: I i = 1 n { x i ≡ a i ( m o d m i ) \overset{n}{\underset{i=1}{\mathbb{I}}}\left\{\begin{matrix} x_i \equiv a_i\;\;\;(mod\;m_i) \end{matrix}\right. i=1In{xi≡ai(modmi)
不保证模数两两互质。
要求出线性同余方程组的一组解,或判断无解。
合并同余方程
方法很简单,ExCRT通过把两个线性同余方程合并成一个,进而解出答案。
对于两个同余方程:
{
x
1
≡
a
1
(
m
o
d
m
1
)
x
2
≡
a
2
(
m
o
d
m
2
)
\left\{\begin{matrix} x_1\equiv a_1\;\;\;(mod\;m_1)\\ x_2\equiv a_2\;\;\;(mod\;m_2) \end{matrix}\right.
{x1≡a1(modm1)x2≡a2(modm2)
先把它们转成不定方程:
{
x
1
+
m
1
⋅
y
1
=
a
1
x
2
+
m
2
⋅
y
2
=
a
2
\left\{\begin{matrix} x_1+m_1\cdot y_1= a_1\\ x_2+m_2\cdot y_2= a_2 \end{matrix}\right.
{x1+m1⋅y1=a1x2+m2⋅y2=a2
若有
x
1
=
x
2
x_1=x_2
x1=x2,则充要条件为:
m
1
⋅
y
1
−
m
2
⋅
y
2
=
a
1
−
a
2
m_1\cdot y_1-m_2\cdot y_2=a_1-a_2
m1⋅y1−m2⋅y2=a1−a2
这样就得到了一个新的不定方程,根据裴蜀定理,若 gcd ( m 1 , m 2 ) ∤ a 1 − a 2 \gcd(m_1,m_2)∤a_1-a_2 gcd(m1,m2)∤a1−a2则无解。
否则有解,用Exgcd可以求出一组解
(
p
0
,
q
0
)
(p_0,q_0)
(p0,q0)。然后求出通解:
y
1
=
p
0
+
k
⋅
l
c
m
(
m
1
,
m
2
)
m
1
y_1=p_0+k\cdot \frac {lcm(m_1,m_2)}{m_1}
y1=p0+k⋅m1lcm(m1,m2)
y
2
=
q
0
−
k
⋅
l
c
m
(
m
1
,
m
2
)
m
2
y_2=q_0-k\cdot \frac {lcm(m_1,m_2)}{m_2}
y2=q0−k⋅m2lcm(m1,m2)
我们把通解
y
1
y_1
y1回代,就得到了满足条件的
x
x
x的通解:
x
1
=
a
1
−
m
1
p
0
−
k
⋅
l
c
m
x_1=a_1-m_1p_0-k\cdot lcm
x1=a1−m1p0−k⋅lcm
我们看到,
x
x
x合法的最小周期是
l
c
m
lcm
lcm,因此可以构造出新的同余方程:
x
≡
a
1
−
m
1
p
0
(
m
o
d
l
c
m
)
x\equiv a_1-m_1p_0\;\;\;(mod\;lcm)
x≡a1−m1p0(modlcm)
这样就合并了两个同余方程。合并n-1次,得到一个同余方程,问题就很显然了。
时间复杂度O(nlogn)
构造答案式
构造答案式的过程如下:
对于
{
x
1
≡
a
1
(
m
o
d
m
1
)
x
2
≡
a
2
(
m
o
d
m
2
)
\left\{\begin{matrix} x_1\equiv a_1\;\;\;(mod\;m_1)\\ x_2\equiv a_2\;\;\;(mod\;m_2) \end{matrix}\right.
{x1≡a1(modm1)x2≡a2(modm2)
- 解方程 m 1 ⋅ x + m 2 ⋅ y = gcd ( m 1 , m 2 ) m_1\cdot x+m_2\cdot y=\gcd(m_1,m_2) m1⋅x+m2⋅y=gcd(m1,m2)
- 若 a 1 ≢ a 2 ( m o d gcd ( m 1 , m 2 ) ) a_1\not \equiv a_2\pmod{\gcd(m_1,m_2)} a1≡a2(modgcd(m1,m2))则无解,否则有解
- 两个同余方程合并为 x ≡ a 1 m 2 y + a 2 m 1 x g c d ( m 1 , m 2 ) ( m o d l c m ( m 1 , m 2 ) ) x\equiv \frac{a_1m_2y+a_2m_1x}{gcd(m_1,m_2)}\left(\mod lcm(m_1,m_2)\right) x≡gcd(m1,m2)a1m2y+a2m1x(modlcm(m1,m2))
对比观察中国剩余定理的合并结果: X ≡ a 1 m 2 y + a 2 m 1 x ( m o d m 1 m 2 ) X\equiv a_1m_2y+a_2m_1x\pmod{m_1m_2} X≡a1m2y+a2m1x(modm1m2),我们发现,CRT是ExCRT的特殊情况。
接下来我们说一下这个过程:
- 首先把两个同余方程转不定方程,得到 m 1 ⋅ x − m 2 ⋅ y = a 1 − a 2 m_1\cdot x-m_2\cdot y=a_1-a_2 m1⋅x−m2⋅y=a1−a2。根据裴蜀定理,若 g c d ( m 1 , m 2 ) ∣ a 1 − a 2 gcd(m_1,m_2)|a_1-a_2 gcd(m1,m2)∣a1−a2,即 a 1 ≡ a 2 ( m o d gcd ( m 1 , m 2 ) ) a_1\equiv a_2\pmod{\gcd(m_1,m_2}) a1≡a2(modgcd(m1,m2))时有解,否则无解。
- 若要解 m 1 ⋅ x − m 2 ⋅ y = a 1 − a 2 m_1\cdot x-m_2\cdot y=a_1-a_2 m1⋅x−m2⋅y=a1−a2,只需要解 m 1 ⋅ x + m 2 ⋅ ( − y ) = gcd ( m 1 , m 2 ) m_1\cdot x+m_2\cdot (-y)=\gcd(m_1,m_2) m1⋅x+m2⋅(−y)=gcd(m1,m2),令 y = − y y=-y y=−y,然后翻倍即可。
- 构造答案式。(也算是合并了)
时间复杂度O(nlogn)
后记
于是皆大欢喜。