中国剩余定理
中国剩余定理
定义
中国剩余定理可求解如下形式的一元线性同余方程组
其中对于任意
流程
- 计算
- 对于第
个方程- 计算
- 计算
在模 意义下的逆元 - 计算
(不要对 取模)
- 计算
- 方程在模
意义下的唯一解为
证明
下面证明上述算法所得到的
当
又有
所以对于任意的
扩展中国剩余定理
设两个方程分别是是
将它们转化为二元不定方程,即
由裴蜀定理,得如果
其他情况下,可以使用
于是
因为
于是我们就可以对整个方程组进行求解。
代码
for(int i=2;i<=n;i++){
int A=m[i-1],B=m[i],c=a[i]-a[i-1];
c=(c%A+A)%A;
int d=exgcd(m[i-1],m[i],x,y);
x*=(c/d);
x=(x%(-B/d)+(-B/d))%(-B/d);
a[i]=A*x+a[i-1];
m[i]=A/d*B;
a[i]=(a[i]%m[i]+m[i]%m[i]);
}
write((a[n]%m[n]+m[n])%m[n]);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】