扩展中国剩余定理(扩展CRT)详解
今天在xsy上翻题翻到了一道扩展CRT的题,就顺便重温了下(扩展CRT模板也在里面)
中国剩余定理是用于求一个最小的x,满足x≡ci(modmi)。
正常的CRT有一个微小的要求,就是∀i,j(mi,mj)=1。
在某些情况下,这个式子无法被满足,这个时候就要用扩展CRT来求解了。
我们先假设我们只有两条方程要被求解,它们分别是:
{x≡c1(modm1)x≡c2(modm2)
我们考虑将同余去掉,就变成了:
{x=c1+m1k1x=c2+m2k2
联立一波,得:
c1+m1k1=c2+m2k2
m1k1=(c2−c1)+m2k2
若该方程存在解,则有(m1,m2)|(c2−c1),否则无解
下面令d=(m1,m2)。
我们对等式两边全部除以d,得:
m1dk1=c2−c1d+m2dk2
经过简单变式,得:
m1dk1≡c2−c1d(modm2d)
没错,我们成功消掉了k2
我们将m1d移项到等式右侧,得:
k1≡inv(m1d,m2d)×c2−c1d(modm2d)
其中inv(x,y)表示模y意义下x的乘法逆元
重新将该式子变回等式,得:
k1=inv(m1d,m2d)×c2−c1d+ym2d
该式子已经化简到尽了,考虑重新代入回最初的式子。
将k1代入x=c1+m1k中,得:
x≡inv(m1d,m2d)×c2−c1d×m1+c1(modm1m2d)
至此,求两条式子的扩展CRT已经讲完了
如果方程有多条怎么办:我们做n−1次的两条式子的CRT合并就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!