CF1016G Appropriate Team [Pollard-rho,FMT]

题目描述:给定 \(n,X,Y\)\(n\) 个正整数 \(a_i\),求多少个 \((i,j)\) 使 \(\exist v,\gcd(a_i,v)=X,\text{lcm}(a_j,v)=Y\)

数据范围:\(n\le 2\times 10^5,a_i,X,Y\le 10^{18}\)

首先特判 \(X\not|Y\),这个肯定是 \(0\).

然后我们用Pollard-rho将 \(Y\) 分解质因数,然后用 \(Y\) 的质因数去分解其他的数。

\(X|a_i\),则考虑对于 \(Y\) 的每个质因数,\(v\) 的可能的次数。

则若 \(X\) 在某一个质因数上的次数与 \(a_i\) 相同,则 \(v\) 的次数可以任意不小于 \(X\) 的次数。否则 \(v\) 的次数必须与 \(X\) 相同。

由于 \(Y\) 的质因子数不超过 \(18\),我们将 \(v\) 的次数必须与 \(X\) 相同的质因数集合压起来,记为 \(SX_i\).

\(a_i|Y\),则考虑对于 \(Y\) 的每个质因数,\(v\) 的可能的次数。

则若 \(Y\) 在某一个质因数上的次数与 \(a_i\) 相同,则 \(v\) 的次数可以任意不大于 \(Y\) 的次数。否则 \(v\) 的次数必须与 \(Y\) 相同。同样把必须相同的压起来,记为 \(SY_i\)

\(X\)\(Y\) 次数不相同的质因数集合设为 \(SS\),则 \((i,j)\) 满足要求当且仅当 \(SX_i\cap SY_j\cap SS=0\).

这个可以用 Fans MeeTing FMT 来计算,时间复杂度 \(O(Y^\frac{1}{4}+(n+2^{\omega(Y)})\omega(Y))\)

code

posted @ 2020-04-10 19:49  mizu164  阅读(138)  评论(0编辑  收藏  举报