首页 > 其他分享 >中国剩余定理(CRT)

中国剩余定理(CRT)

时间:2022-12-18 21:25:45浏览次数:54  
标签:剩余 bb CRT pmod 定理 int ll equiv

中国剩余定理 (即 Chinese Remainder Theorem,简称 CRT) 可求解如下形式的一元线性同余方程组(其中 \(\gcd(m_1,m_2,\dots,m_n) = 1\)):

\[\begin{cases} x \equiv a_1 \pmod{m_1}\\ x \equiv a_2 \pmod{m_2}\\ \cdots\\ x \equiv a_n \pmod{m_n} \end{cases} \]

解法如下:记 \(M=\prod\limits_{i=1}^n m_i,r_i = \dfrac{M}{m_i},r'_i = (r_i)^{-1}\pmod{n_i}\),则一个答案为 \(ans = \sum\limits_{i=1}^n{a_i r_i r'_i}\),最小正整数解即 \(ans\bmod M\)。

证明显然:对于 \(i\),所有 \(j\neq i\) 都满足 \(r_j\) 为 \(m_i\) 的倍数,故 \(a_j r_j r'_j \equiv 0\pmod{m_i}\);对于 \(i\) 本身满足 \(r_i r'_i \equiv 1\pmod{m_i}\),故 \(a_i r_i r'_i \equiv a_i\pmod{m_i}\)。所以有 \(\sum\limits_{i=1}^n{a_i r_i r'_i} \equiv a_i \pmod{m_i}\)。

P1495 模板代码

#include<iostream>
#include<cstdio>
#define ll long long
#define maxn 15
using namespace std;
int n,a[maxn],b[maxn]; ll prod=1LL,ans=0,x,y;
void exgcd(ll aa,ll bb,ll &x,ll &y){if(bb==0){x=1LL; y=0LL; return;} exgcd(bb,aa%bb,x,y); ll tmp=x; x=y; y=tmp-(aa/bb)*y;}
int main(){
    scanf("%d",&n); for(int i=1;i<=n;i++){scanf("%d%d",&a[i],&b[i]); prod*=1LL*a[i];}
    for(int i=1;i<=n;i++){ll res=prod/a[i]; exgcd(res,a[i],x,y); x=(x%a[i]+a[i])%a[i]; ans+=b[i]*res*x;}
	printf("%lld",ans%prod);
    return 0;
}

标签:剩余,bb,CRT,pmod,定理,int,ll,equiv
From: https://www.cnblogs.com/qzhwlzy/p/16990964.html

相关文章

  • 阿尔巴德定理
    阿尔巴德定理的含义阿尔巴德定理是指:一个​​企业经营​​​成功与否,全靠对​​顾客​​​的要求了解到什么程度。看到了别人的需要,你就成功了一半;满足了别人的​​需......
  • 《世界数理中心之定理生成机与定理证明机→觉醒→寻找控失的智慧03》 回复
    《世界数理中心之定理生成机与定理证明机→觉醒→寻找控失的智慧03》     https://tieba.baidu.com/p/8185067399      我在  《前十年你张嘴说别......
  • Crt常用设置
    目录自动批量创建会话标签自动登录脚本自动保存会话日志自动批量创建会话标签https://gitee.com/jiyuchen1/crtSessionTemplate自动登录脚本#$language="VBScript"#......
  • secureCRT yyds
    上一篇使用mobaxterm作为上位机,使用lrzlsz命令和开发收发文件,但是在使用中经常出现卡死,文件无法发送给开发板。后来找了其他软件SecureCRT,这是个付费软件。在知乎平台找到......
  • secureCRT删除键乱码
    解决方法:先打开Options–>SessionOptions–>Terminal–>Emulation(中文:选项–>回话选项–>终端–>仿真)界面下:1.终端(T):选择linux,默认为VT100.2.ANSI颜色(A)打上勾......
  • secureCRT优化设置
    1、设置显示配色主题效果2、会话回滚的缓冲区大小调节3、双击Tab自动克隆会话Tab4、忽略窗口标题更改请求5、底边栏......
  • Lucas定理
    Lucas定理,是用来求C_m_n%p的C_m_n=C_m%p_n%p*C_m/p_n/p%p;代码:  #include<bits/stdc++.h>usingnamespacestd;longlongt,n,m,p;longlongksm(longlongx,......
  • 剩余类 完全剩余系 缩减剩余系 欧拉定理 扩展欧拉定理
    数论这篇关于数论的随笔,我将近拖了两个星期(大笑),完全就是因为懒,最近闲的没事,就来重蹈覆辙来将这篇随笔写完。这是我第一篇关于数论的随笔,希望大佬们能够提出宝贵的意见。好......
  • Qt: MingW编译程序,crt2.o,crtbegin.o,crtend.o,No such file or directory
    QtMingW编译程序,遇见如下错误提示:1、:-1:error:cannotfindcrt2.o:Nosuchfileordirectory2、:-1:error:cannotfindcrtbegin.o:Nosuchfileordirectory3、:......
  • 中心极限定理和二项分布相关公式说明
    在概率论和统计学中,二项分布是\(n\)个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为\(p\)。中心极限定理(centrallimittheorem,CLT)在自然界与生产......