【题解】CF1499D The Number of Pairs 数论、质因数分解、线性筛

题目链接

前置问题

有多少有序点对 \((a,b)\) 满足 \(\gcd(a,b) = x,\text{lcm}(a,b) = y\)

  • \((1,4)\)\((4,1)\) 为两种点对, \((3,3)\)\((3,3)\) 为同一种点对。

从质因数分解的角度:

  • \(\gcd(a,b)=\prod p_i^{\min(a_i,b_i)}\)

  • \(\text{lcm}(a,b)=\prod p_i^{\max(a_i,b_i)}\)

对于其中的一个质因数 ,若 \(a_i\not = b_i\) ,那么有两种方案若 \(a_i=b_i\) 那么有两种方案。

\(w\)\(a_i\not = b_i\) 的位置数量,那么一共有 \(2^w\) 对满足条件的 \((a,b)\)

\(g(x)\)\(x\) 不同的质因数个数 , 那么易知 \(w=g(y / x)\)

\(g(x)\) 可以用线性筛在 \(O(n)\) 的时间内计算出来。

复杂度 \(O(n)\)

回到本题

  • \(\text{lcm}(a,b) = r\times \gcd(a,b)\)

那么容易得到:

\(\gcd(a,b)=\dfrac{x}{c\times r - d}\)

那么可以知道 \(\gcd(a,b)\) 一定是 \(x\) 的约数,枚举 \(x\) 的约数可以得出若干对合法的 \(\gcd\)\(\text{lcm}\) 转化成上面的问题即可。

复杂度 \(O(n+T\sqrt{n})\)

代码记录

posted @ 2021-10-18 15:52  Themaxmaxmax  阅读(23)  评论(0编辑  收藏  举报