拓展中国剩余定理

上一篇:中国剩余定理
前置知识:费蜀定理(贝组定理)的证明与应用
如果您对逆元不够了解:逆元简述


概念

很类似中国剩余定理:
( 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):xa1(modm1)xa2(modm2)xan(modmn)
还是这个方程组,但是这次 m 1 , m 2 , … , m n m_1,m_2,\dots,m_n m1,m2,,mn 不一定两两互质了
用拓展中国剩余定理可以求出 x x x最小非负整数解


基本思路

拓中的主要思想就是把两个同余方程合并成一个,合并 n − 1 n-1 n1 次后就只会剩下一个方程,然后解它就很容易了。


推导过程

说明:因为不知道符号意义、没有看前置知识等问题造成的食用体验不佳,本人不承担任何责任。实在不能理解就在下面提问吧。。。(虽然肯定不会有人提问)

(这里以第一个和第二个方程为例进行变形)

  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+c2c1
    为了叙述方便,下文用 gcd ⁡ \gcd gcd 来表示 ( m 1 , m 2 ) \rm (m_1,m_2) (m1,m2)
  2. 式子变形为 m 1 k 1 − m 2 k 2 = c 2 − c 1 \rm m_1k_1-m_2k_2=c_2-c_1 m1k1m2k2=c2c1
    然后应用贝祖定理得,以上等式有解充要条件为 g c d ∣ c 2 − c 1 \rm gcd\mid c_2-c_1 gcdc2c1 (这个是判无解用的)
  3. 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=gcdc2c1+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×k1gcdc2c1(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) k1inv(gcdm1,gcdm2)×gcdc2c1(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)×gcdc2c1+y×gcdm2
  4. 将上式代回 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)×gcdc2c1×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) xinv(gcdm1,gcdm2)×gcdc2c1×m1+c1(modgcdm1m2)
  5. 观察式子结构,发现这个式子又是 x ≡ c ( m o d m ) \rm x \equiv c \pmod m xc(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)×gcdc2c1%gcdm2×m1+c1

那么我们就成功地把两个同余方程合并成了同一个。合并 n − 1 n-1 n1 次后,我们就可以得出答案了。
5.中的式子是拓中的精髓,一定要背下来
废话,这东西考场上又推不出来


唔,这几篇文章终于写完了~

这六篇文章其实都是互相关联的,建议按照这样的顺序食用:

  1. 欧几里得算法
  2. 扩展欧几里得算法(简称扩欧)
  3. 逆元
  4. 费蜀定理
  5. 中国剩余定理
  6. 扩展中国剩余定理(简称扩中)

其中 ( 2 ) ( 3 ) (2)(3) (2)(3) 联系较紧密,建议放在一起看QAQ

留个赞吧qwq

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值