屠龙勇士

这就是一道系数不为1的扩展CRT(本来如果保证有逆元的话是可以直接逆元的,但是不保证有逆元)

那么这篇博客的方法可以学习,至于为什么那就是所有的通解,我们先来推导一下普通的excrt为什么那个样子是通解(见蓝书P155)

我们利用数学归纳法,当k1=1时,只有一个方程:xa1(modm1),当求出一个特解x的时候,他的通解就是x+im1,显然满足

假设对前k1个方程来说,解集为{x0+im}(其中x0是这个解集中的最小正整数),我们来考虑加入第k个方程后的通解是多少(假设我们从解集中任选一个解x1

显然通解就是x1+tmak(modmk)的通解,注意x1是已知数,故转化为线性方程tm+mky=akx1,那么t的通解就是t+imkgcd(m,mk),而我们有gcdlcm=ab,故写成t+ilcm(m,mk)m,代入通解有x1+mt+ilcm(m,mk),那么通过x1求出来的解集就是{x1+mt+ilcm(m,mk)}

对于前k1个方程的解集中的两个解x1,x2(假设x1<x2),分别求出前k个方程的解集为{x1+mt1+ilcm(m,mk)}和{x2+mt2+jlcm(m,mk)};我们有x1+mt1ak(modmk)x2+mt2ak(modmk),所以x2x1+m(t2t1)0(modmk),就是说x2x1+m(t2t1)mk的倍数,而显然x2x1m的倍数(因为x1,x2都是前k1个方程的一个通解),所以x2x1+m(t2t1)m的倍数,也就是说x2x1+m(t2t1)是两者的公倍数,由于公倍数是最小公倍数的倍数(复习一下,这个定理从质因数分解之后取max理解),所以x2x1+m(t2t1)是最小公倍数的倍数,进而可以得到任意取出的解所求出的新的解集是一样的,也就证明完毕了

这道题目也尝试证明一下

稳妥一点的方法是什么?

首先列出所有不定方程,然后对每一个方程化成线性同余方程后解出一个特解xi,那么这个方程的通解就是xi+kpigcd(pi,bi),设最终答案为x,那么就可以列出新的若干个不定方程xxi(modpigcd(pi,bi))

这就又是一般的ex中国剩余定理了

代码见洛谷即可

update 2024.8.6

最开始那篇题解的M好像有错,见这篇讨论

所以还是用稳妥一点的办法吧

posted @   最爱丁珰  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示