上一篇:中国剩余定理
前置知识:费蜀定理(贝组定理)的证明与应用
如果您对逆元不够了解:逆元简述
概念
很类似中国剩余定理:
(
S
)
:
{
x
≡
a
1
(
m
o
d
m
1
)
x
≡
a
2
(
m
o
d
m
2
)
⋮
x
≡
a
n
(
m
o
d
m
n
)
(S):\begin{cases} x \equiv a_1 \pmod{m_1}\\ x \equiv a_2 \pmod{m_2}\\ \quad\vdots\\ x \equiv a_n \pmod{m_n}\\ \end{cases}
(S):⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x≡a1(modm1)x≡a2(modm2)⋮x≡an(modmn)
还是这个方程组,但是这次
m
1
,
m
2
,
…
,
m
n
m_1,m_2,\dots,m_n
m1,m2,…,mn 不一定两两互质了
用拓展中国剩余定理可以求出
x
x
x 的最小非负整数解。
基本思路
拓中的主要思想就是把两个同余方程合并成一个,合并 n − 1 n-1 n−1 次后就只会剩下一个方程,然后解它就很容易了。
推导过程
说明:因为不知道符号意义、没有看前置知识等问题造成的食用体验不佳,本人不承担任何责任。实在不能理解就在下面提问吧。。。(虽然肯定不会有人提问)
(这里以第一个和第二个方程为例进行变形)
- 将两个方程写成
x
=
m
1
k
1
+
c
1
,
x
=
m
2
k
2
+
c
2
\rm x=m_1k_1+c_1,x=m_2k_2+c_2
x=m1k1+c1,x=m2k2+c2 ,
两式联立得 m 1 k 1 + c 1 = m 2 k 2 + c 2 \rm m_1k_1+c_1=m_2k_2+c_2 m1k1+c1=m2k2+c2 ,
移项得 m 1 k 1 = m 2 k 2 + c 2 − c 1 \rm m_1k_1=m_2k_2+c_2-c_1 m1k1=m2k2+c2−c1
为了叙述方便,下文用 gcd \gcd gcd 来表示 ( m 1 , m 2 ) \rm (m_1,m_2) (m1,m2) - 式子变形为
m
1
k
1
−
m
2
k
2
=
c
2
−
c
1
\rm m_1k_1-m_2k_2=c_2-c_1
m1k1−m2k2=c2−c1
然后应用贝祖定理得,以上等式有解充要条件为 g c d ∣ c 2 − c 1 \rm gcd\mid c_2-c_1 gcd∣c2−c1 (这个是判无解用的) 1.
中的等式两边同时除以 gcd \gcd gcd 得 m 1 g c d × k 1 = c 2 − c 1 g c d + m 2 g c d × k 2 \rm\dfrac{m_1}{gcd} \times k_1=\dfrac{c_2-c_1}{gcd}+\dfrac{m_2}{gcd}\times k_2 gcdm1×k1=gcdc2−c1+gcdm2×k2
即 m 1 g c d × k 1 ≡ c 2 − c 1 g c d (   m o d   m 2 g c d ) \rm\dfrac{m_1}{gcd}\times k_1\equiv \dfrac{c_2-c_1}{gcd} \left(\bmod \dfrac{m_2}{gcd}\right) gcdm1×k1≡gcdc2−c1(modgcdm2)
继续化简,得 k 1 ≡ i n v ( m 1 g c d , m 2 g c d ) × c 2 − c 1 g c d (   m o d   m 2 g c d ) \rm k_1\equiv inv\left(\dfrac{m_1}{gcd},\dfrac{m_2}{gcd}\right)\times \dfrac{c_2-c_1}{gcd} \left(\bmod \dfrac{m_2}{gcd}\right) k1≡inv(gcdm1,gcdm2)×gcdc2−c1(modgcdm2)
改写成等式,方便使用: k 1 = i n v ( m 1 g c d , m 2 g c d ) × c 2 − c 1 g c d + y × m 2 g c d \rm k_1=inv\left(\dfrac{m_1}{gcd},\dfrac{m_2}{gcd}\right)\times \dfrac{c_2-c_1}{gcd}+y\times\dfrac{m_2}{gcd} k1=inv(gcdm1,gcdm2)×gcdc2−c1+y×gcdm2- 将上式代回
x
=
m
1
k
1
+
c
1
x=m_1k_1+c_1
x=m1k1+c1 ,得:
x = i n v ( m 1 g c d , m 2 g c d ) × c 2 − c 1 g c d × m 1 + y × m 1 m 2 g c d + c 1 \rm x=inv\left(\dfrac{m_1}{gcd},\dfrac{m_2}{gcd}\right)\times \dfrac{c_2-c_1}{gcd}\times m_1+y\times\dfrac{m_1m_2}{gcd}+c_1 x=inv(gcdm1,gcdm2)×gcdc2−c1×m1+y×gcdm1m2+c1
即 x ≡ i n v ( m 1 g c d , m 2 g c d ) × c 2 − c 1 g c d × m 1 + c 1 (   m o d   m 1 m 2 g c d ) \rm x\equiv inv\left(\dfrac{m_1}{gcd},\dfrac{m_2}{gcd}\right)\times \dfrac{c_2-c_1}{gcd}\times m_1+c_1 \left(\bmod\dfrac{m_1m_2}{gcd}\right) x≡inv(gcdm1,gcdm2)×gcdc2−c1×m1+c1(modgcdm1m2) - 观察式子结构,发现这个式子又是
x
≡
c
(
m
o
d
m
)
\rm x \equiv c \pmod m
x≡c(modm) 的形式。
其中 m = m 1 m 2 g c d , c = i n v ( m 1 g c d , m 2 g c d ) × c 2 − c 1 g c d % m 2 g c d × m 1 + c 1 \rm m=\dfrac{m_1m_2}{gcd},c=inv\left(\dfrac{m_1}{gcd},\dfrac{m_2}{gcd}\right)\times \dfrac{c_2-c_1}{gcd}\%\dfrac{m_2}{gcd}\times m_1+c_1 m=gcdm1m2,c=inv(gcdm1,gcdm2)×gcdc2−c1%gcdm2×m1+c1
那么我们就成功地把两个同余方程合并成了同一个。合并
n
−
1
n-1
n−1 次后,我们就可以得出答案了。
5.
中的式子是拓中的精髓,一定要背下来
废话,这东西考场上又推不出来
唔,这几篇文章终于写完了~
这六篇文章其实都是互相关联的,建议按照这样的顺序食用:
- 欧几里得算法
- 扩展欧几里得算法(简称扩欧)
- 逆元
- 费蜀定理
- 中国剩余定理
- 扩展中国剩余定理(简称扩中)
其中 ( 2 ) ( 3 ) (2)(3) (2)(3) 联系较紧密,建议放在一起看QAQ
留个赞吧qwq