【题解】CF571E Geometric Progressions
设有用质数集合为 \(P\),\(P\) 中有质数 \(p\) 的充要条件为 \(\exists i,p|a_ib_i\),可以发现 \(|P|\) 是 \(O(w(\max a_i,b_i)n)\) 级别。
接下来用 \(p_{1},p_{2},\cdots,p_{m=|P|}\) 来表示 \(P\) 中的质数。考虑令 \(c_{i,t}\) 表示最大的 \(k\) 使得 \(p_t^k|a_i\),同理设 \(d_{i,t}\) 表示最大的 \(k\) 使得 \(p_t^k|b_i\) 。
注意到对于 \(p_t\),如果所有的 \(i\) 都有 \(d_{i,t}=0\) 那么这一个质数就是摆设,如果存在 \(i\) 满足 \(d_{i,t}=0\),那么答案就已经确定,只需要检验是否合法。接下来的情况均有 \(d\not=0\) 。
考虑最终答案中 \(p_1\) 的次数 \(x\),列出方程:
可以发现我们要求的就是该方程最小的非负整数解 \(x_0\) 。
先对前 \(n\) 个式子动手。考虑限制 \(d_{i,1}|(x-c_{i,1})\) 可以重新写成 \(x\equiv c_{i,1}\pmod{d_{i,1}}\) 以及 \(x\geq c_{i,1}\) 。如此重写前 \(n\) 个限制,得到了一个同余方程组,考虑按照 excrt 的方法将其逐次合并,最后可以得到一个方程 \(x\equiv w\pmod{h}\),其中 \(h=\mathrm{lcm}(d_{1,1},d_{2,1},\cdots,d_{n,1})\) 。
也就是说 \(x=w+kh\),现在要找的是最小的非负整数 \(k\):
不知道怎么做了。
考虑合并等比数列,合并到最后输出首项即可。
先考虑合并 \(1,2\) 。相当于有若干方程 \(c_{1,i}+d_{1,i}x=c_{2,i}+d_{2,i}y\),去掉本质相同的方程后:
- 如果剩下大于 \(1\) 个方程,那么有唯一解 \((x,y)\) 或者无解,无解的话说明不存在答案,唯一解相当于等比数列 \(1,2\) 的交集就只有一个数,判断这个数是否都出现过即可。
- 如果剩下恰好 \(1\) 个方程:无解情况同理。否则用 exgcd 求出最小非负整数解 \(x_0,y_0\),那么合并后的等比数列变成了 \(a=c_{1,1}+d_{1,1}x_0,b=\mathrm{lcm}(d_{1,1},d_{2,1})\) 。
这种题能写吗?