中国剩余定理(CRT)

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

{xa1(modm1)xa2(modm2)xan(modmn)

解法如下:记 M=i=1nmi,ri=Mmi,ri=(ri)1(modni),则一个答案为 ans=i=1nairiri,最小正整数解即 ansmodM

证明显然:对于 i,所有 ji 都满足 rjmi 的倍数,故 ajrjrj0(modmi);对于 i 本身满足 riri1(modmi),故 aiririai(modmi)。所以有 i=1naiririai(modmi)

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;
}
posted @   qzhwlzy  阅读(294)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
主题色彩