zoukankan      html  css  js  c++  java
  • 【数论】中国剩余定理(CRT)

    我们需要解决满足

    (egin{cases}x equiv a_1 (mod b_1) \ x equiv a_2 (mod b_2) \ ~~~~~~~~~~~cdots \ x equiv a_n (mod b_n)end{cases})

    的一个解 (x),并且保证所有的 (b) 都互相互质。

    我们考虑设 (M=prodlimits_{i=1}^{n} b_i)(m_i=dfrac{M}{b_i})(t_i)(m_ixequiv 1 (mod b_i)) 的一个解,最后的 (x=sumlimits_{i=1}^{n}a_im_it_i)

    我们现在来证明一下 (x) 是一个满足条件的解。

    证明:

    对于任意的 (k in [1, n])(a_km_kt_k equiv a_k (mod b_k))

    (a_km_kt_k equiv 0 (mod b_i) (i in [1, n], i ot= k)),故,(x) 是一个满足条件的解。

    我们知道,(M equiv 0 (mod b_i) (i in [1, n])),故 (x + kM (k in )) 都是满足答案的解,若题目要求最小正整数解,(x = (x mod M + M) mod M)

    code

    拓展中国剩余定理 (EXCRT)

    我们要解决的还是

    (egin{cases}x equiv a_1 (mod b_1) \ x equiv a_2 (mod b_2) \ ~~~~~~~~~~~cdots \ x equiv a_n (mod b_n)end{cases})

    这么一个问题,其中不保证所有的 (b) 都互相互质。

    我们假设已经有一个解 (x) 满足前 (k - 1) 个同余方程,此时我们设 (d=operatorname{lcm}{b_1, b_2, cdots, b_{k-1}}),显然,(x + jd (j in )) 都是满足条件的解。

    那么对于第 (k) 个同余方程,即要满足 (x+jdequiv a_k (mod b_k)),可转换为 (jd equiv a_k - x (mod b_{k})),显然,可以用扩展欧几里得来求解 (j),若 (gcd(d, b_k) mid a_k-x) 那么就无解,否则 (x = x+jd, d=operatorname{lcm}{b_1, b_2, cdots, b_k}),此时的 (x) 是满足前 (k) 个方程的,这样一直做到最后就可以求出答案。

    code

  • 相关阅读:
    BZOJ 2016十连测 D3T3序列
    Luogu3579 Solar Panels
    POI2014解题报告
    BZOJ4377 Kurs szybkiego czytania Luogu 3589[POI2015]KUR
    Luogu3587[POI2015]POD
    BZOJ4386[POI2015]Wycieczki / Luogu3597[POI2015]WYC
    BZOJ4381 : [POI2015]Odwiedziny / Luogu3591[POI2015]ODW
    HDU 1133 Buy the ticket
    HDU RPG的错排 【错排&&组合】
    【转】求逆元的n种方法
  • 原文地址:https://www.cnblogs.com/chzhc-/p/13571687.html
Copyright © 2011-2022 走看看