[AGC063D] Many CRT

题意:有 \(n\) 个同余方程,\(x\equiv a+ib\pmod{c+id}\)\(0\le i<n\)。求此同余方程组的最小非负整数解对给定的模数 \(998244353\) 取模的值。

先假设 \((c,d)=1\),这样 \((d,c+id)=1\)

\(M\)\(c+id\) 的 lcm,则我们要求出 \(x\bmod M\)\(\bmod 998244353\) 意义下的值。

考虑怎么去解这个方程组,普通的方法肯定是不行的。我们将式子两边同时乘上 \(d\)(因为保证了 \((c,d)=1\),所以 \((d,c+id)=1\),这是可行的),得到 \(dx\equiv ad+ibd\pmod{c+id}\),再补上一个 \(bc\),即 \(dx+bc\equiv ad+ibd+bc\pmod{c+id}\)。消去 \(ibd+bc\),也就是 \(dx+bc\equiv ad\pmod{c+id}\),联立解得 \(x\equiv a-\frac{bc}d\pmod M\)。现在我们的任务就是求出 \(a-\frac{bc}d\bmod M\)

\(A=bc\),不妨先求 \(\frac Ad\bmod M\)

\(\frac Ad\equiv t\pmod M\),即 \(A\equiv td\pmod M\)\(0\le t<M\)。设 \(A+xM=td\)。则 \(A+xM\equiv 0\pmod d\)。解出 \(x\) 然后带入 \(t=\frac{A+xM}d\) 计算 \(t\) 即可,得到的 \(t\) 一定是 \([0,M)\) 的整数。这样我们就求出了 \(\frac{bc}d\bmod M\)

考虑 \(a-\frac{bc}d\bmod M\),实际上我们需要知道 \(a\)\(\frac{bc}d\bmod M\) 的大小关系。显然如果 \(M\) 比较大,则 \(a\) 在大多数情况下都不会超过 \(\frac{bc}d\bmod M\)。实际上可以证明上述断言在 \(M>2\times 10^{12}\) 下必然成立。

最后还有个遗留问题,若 \((c,d)\ne 1\),设 \((c,d)=g\),则如果 \(g\nmid b\) 则无解。否则设 \(a'=[a/g]\)。求出解然后令 \(x'=gx+a\bmod g\) 即可。

posted @ 2025-07-22 20:40  Network_Error  阅读(42)  评论(0)    收藏  举报