zoukankan      html  css  js  c++  java
  • 中国剩余定理学习笔记

    I.CRT(中国剩余定理)

    中国剩余定理:

    已知方程

    \[\begin{cases}x\equiv a_1\pmod{m_1}\\\vdots\\x\equiv a_n\pmod{m_n}\end{cases} \]

    则我们设\(M=\prod\limits_{i=1}^nm_i,M_i=\dfrac{M}{m_i},b_i=(M_i)^{-1}\pmod{m_i}\)

    则有

    \[\boxed{x\equiv\sum\limits_{i=1}^na_iM_ib_i\pmod M} \]

    很明显常规CRT只能在 \(m_i\) 全部互质的情形下使用,不然 \(b_i\) 不一定存在。

    下面证明CRT:

    类比拉格朗日插值,我们考虑找到一个式子,其模 \(m_1\)\(1\),模 \(m_{2\sim n}\) 均为 \(0\)。这样,其 \(a_1\) 倍就是仅模 \(m_1\)\(a_1\) 的数。对所有 \(a_i\) 都做上述操作并求和,就得到了符合条件的数。

    因为 \(m_i\) 两两互质,所以模 \(m_{2\sim n}\) 均为 \(0\) 唯一等价于模 \(\prod\limits_{i=2}^nm_i\)\(0\),也即上文中的 \(M_1\)

    我们设找到的这个式子为 \(kM_1\),则应有 \(kM_1\equiv1\pmod{m_1}\)。明显,其等价于 \(k\)\(M_1\) 在模 \(m_1\) 意义下的逆元,也即上文中的 \(b_1\)


    这个方程的\(n=2,3\)的特例可以用来做任意模数NTT:

    \[\begin{cases}x\equiv a\pmod{A}\\x\equiv b\pmod{B}\end{cases} \]

    则有

    \[x=a+\alpha A=b+\beta B \]

    于是

    \[a+\alpha A\equiv b\pmod B \]

    所以

    \[\alpha\equiv\dfrac{b-a}{A}\pmod B \]

    求出\(\alpha\)后,就有\(x\equiv a+\alpha A\pmod{AB}\)

    如果我们又有一个方程\(x\equiv c\pmod C\)

    就直接联立出方程

    \[\begin{cases}x\equiv a+\alpha A\pmod{AB}\\x\equiv c\pmod C\end{cases} \]

    因为卷积的值域是\(n^3\)的,所以双模就可以支持\(10^6\)的模数,而三模则可以支持常规的\(10^9\)模数。

  • 相关阅读:
    一款漂亮的表格样式(简约版)
    性能测试工具 Jmeter GET 请求 参数为 Json 串且参数中存在变量的转化
    _groovy
    Linux SElinux
    Jmeter-后置处理器(Json extractor)
    jmeter处理接口加密和解密
    nmon内存分析
    jmeter 非GUI执行测试,没有响应数据保存到jtl文件办法
    如何隐藏电脑里的文件或者文件夹
    详解JMeter函数和变量
  • 原文地址:https://www.cnblogs.com/Troverld/p/14620885.html
Copyright © 2011-2022 走看看