[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\) 即可。

浙公网安备 33010602011771号