BZOJ 5418: [Noi2018]屠龙勇士 EXCRT+multiset
题解: 求解形如 $A[i]ans\equiv b[i](mod$ $p[i])$ 的 $x$ 的最小正整数解. 考虑只有一个等式,那么可以直接化成 $exgcd$ 的形式: $A[i]ans+p[i]y=b[i],$ 直接求 $ans$ 的正整数解即可. 增量 $M$ 为 $\frac{p[i]}{gcd(A[i],p[i])}$ 那如果有多个式子呢 $?$ 假设前面的式子得到的最小解为 $ans,$ 增量为 $M.$ 考虑将当前求出的 $ans',M'$ 与 $ans$ 合并. 即 $ans+M\times x=ans'+M'\times y\Rightarrow Mx-M'y=ans'-ans.$ 这个可以再用一次 $exgcd$ 解出来,然后新的增量为 $lcm(M,M')$. 主要就是这些,然后有一些细节和特判需要特别注意一下. #include <set> #include <cstdio> #include <string> #include <algorithm> #define N 200000 #define ll long long #define ull unsigned long long using namespace std; void setIO(string s) { string in=s+".in",out=s+".out"; freopen