总结-exCRT

本文介绍了解决一组同余方程的方法,即使模数并非互质的情况。通过逐步分解方程组,使用扩展欧几里得算法(exGCD)解决两两同余方程的合并问题,最终找到最小非负整数解。提供了具体步骤和实例,适用于算法竞赛和数学问题解决。
摘要由CSDN通过智能技术生成

问题:

求最小非负整数x,使其满足:
\[\begin{cases}x&\equiv&r_1&\pmod {p_1}\\x&\equiv&r_2&\pmod {p_2}\\ &&\vdots\\x&\equiv&r_n&\pmod {p_n}\end{cases}\]
同时不保证模数互质。

解法

考虑同余方程两两合并
\[\begin{cases}x&\equiv&r_1&\pmod {p_1}\\x&\equiv&r_2&\pmod {p_2}\\ \end{cases}\]
合并并移项\(1\).\(r_2-r_1=p_1x_1-p_2x_2\),设\(p=lcm(p1,p2),g=gcd(p1,p2)\)
我们可以用\(exGCD\)算出\(p_1x_1-p_2x_2=g\)的最小整数解
显然如果\(g\not| (r_2-r_1)\)则方程无解。
否则有解
那么我们可以得到这个方程(\(1\))的解\((x1,x2)\)
那么将\(x1\)代入第一个同余式得到一个特解\(X\)
这时考虑两个同余式的周期——它们每\(p\)(定义在上面)次能取到一个相等值
结合已经解得的一个特殊解,就可以得到通解\(x\equiv X (\mod p)\)

例题

模板题目传送-Luogu4777
应用题目传送-Luogu4774

转载于:https://www.cnblogs.com/functionendless/p/9445653.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值