D. The Number of Pairs 数学

D. The Number of Pairs

题意

给你\(c, d, x\),求满足\(c \cdot lcm(a, b) - d \cdot gcd(a, b) = x\)的点对\((a, b)\)的个数。
\(T\)组数据
\(T <= 10^4\), \(c, d, x <= 10^7\)

题解

为了表示简单一点,令\(l = lcm(a, b), g = gcd(a, b)\)
\(cl - dg = x\)
由一些常识,我们知道\(lcm(a, b) \cdot gcd(a, b) = a \cdot b\)
所以\(l = \frac{ab}{g}\)
\(\therefore \frac{cab}{g} - dg = x\)
因为\(g\)\(gcd(a, b)\),所以可设\(a = kg, b = tg\)
代回原式

\[cktg - dg = x \]

\[g = \frac{x}{ckt - d} \]

因为\(g\)是整数,所以\(ckt - d\)\(x\)的因子
所以我们枚举\(i = ckt - d\)
易知对于一个已知的\(g\)而言,\((k, t)\)\((a, b)\)是一一对应的关系
所以我们要统计\((a, b)\)相当于统计\((k, t)\)
又因为\(gcd(a, b)\)是最大公约数,所以\(k, t\)必互质,否则就可以将\(gcd(k, t)\)加入\(gcd(a, b)\)使其变得更大

\[\because i = ckt - d \]

\[\therefore kt = \frac{i + d}{c} \]

当我们枚举\(i\)时,\(\frac{i + d}{c}\)为常量
所以我们就是对于一个常量找互质的数对\((k, t)\)使其满足数对乘积等于这个常量
相当于对这个常量质因数分解,把分解出来的质因数分成两份,找合法的分配方案数
\(\frac{i + d}{c} = \prod_{j<=m}{p_j^{f_j}}\), \(m\)\(\frac{i + d}{c}\)的质因数种数,\(f_j\)表示\(p_j\)这个质因数有\(f_j\)
那么因为分出来的两部分互质,所以对于一个质因数\(p_j\)要么全给\(k\)要么全给\(t\)
所以由一些数学常识(对于每个质因数要么选要么不选),我们可以知道,方案数为\(2^m\)
所以\((k, t)\)的对数就是\(\sum_{i | k}{2^{m(i)}}\)
对于每组询问,我们暴力枚举\(x\)的因子\(i\), 对于每个\(i\),我们找出\(\frac{i + d}{c}\)对应的质因数种数\(m(i)\)
统计一下\(\sum{2^{m(i)}}\)就是答案

\(m(i)\)可以欧拉筛预处理一下搞搞,
复杂度\(O(N + T \cdot \sqrt{N})\)

代码…………
还没写……鸽王天天鸽

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章