Loading

The Number of Pairs

算法

数据范围一眼数学题
然而考场并没有思路

这一类题显然要将 \(\gcd{(a, b)}\) 消掉或者表示 ( \(\rm{lcm}{(a, b)}\) 可以用 \(\gcd{(a, b)}\) 表示)

考虑 \(a = \gcd{(a, b)} * k_1\)\(b = \gcd{(a, b)} * k_2\)
开始化简
pAJeiAf.png

然后可以求出 \(\rm{lcm}{(a, b)} = \frac{k_1 \times k_2 \times x}{c \times k_1 \times k_2 - d}\)

问题转化成已知 \(\rm{lcm}\)\(\rm{gcd}\), 求 \(a, b\) 的种数

考虑 \(\gcd{(a, b)} = \frac{x}{c \times k_1 \times k_2 - d}\)
推出 \(\gcd{(\frac{a}{\frac{x}{c \times k_1 \times k_2 - d}}, \frac{b}{\frac{x}{c \times k_1 \times k_2 - d}})} = 1\)
\(y = c \times k_1 \times k_2 - d\)
化简, 得 \(\gcd{(\frac{a \times y}{x}, \frac{b \times y}{x})} = 1\)
又有 \(k_1 \times k_2 = \frac{y + d}{c}, \rm{lcm}{(a, b)} = \frac{\frac{y + d}{c} \times x}{y \times c}\)
同化简 \(\gcd\) 的方法推出 \(\rm{lcm}(\frac{a \times y}{x}, \frac{b \times y}{x}) = \frac{y + d}{c}\)
问题就变简单了

转化为唯一分解定理后可以知道, 将 \(\frac{y + d}{c}\) 分解之后, 对于每个质因数, 要么给\(a\), 要么给\(b\), 所以答案为 \(2 ^ {Num}\) ( \(Num\) 为质因数个数)
观察前面的柿子, 得出

\[y \mid x \]

所以枚举 \(x\) 的因子 \(y\), 对于每一个因子 \(y\), 检查 \(c \mid y + d\), 记录 \(\frac{y + d}{c}\) 的值并且分解质因数, 完事

本质不同质因数个数这个函数是可以线性筛的。线性筛预处理完,然后枚举 \(x\) 的约数,接着判断 $\dfrac{d + y}{c} $ 是否为整数,最后加上贡献即可


发现这怎么是道绿, 无语

首先显然需要对原柿子进行处理
考虑一些套路, \(\gcd, \textrm{lcm}\) 同时出现, 一定可以令 \(\gcd = x\), 那么现在设 \(a = px, b = qx\), \(\textrm{lcm} = pqx\)
这样可以简化问题

原柿子可以转化为

\[pqx \times c - x \times d = C \]

考虑最终求 \(\{px, qx\}\) 的对数, 你发现因为原柿子中无法区分 \(pq\), 因此相当于对所有满足条件的 \(pq, x\) 中的 \(pq\) 进行分配, 因此下面设 \(pq = y\)
原柿化为

\[(yc - d)x = C \]

显然可以枚举 \(x \mid C\), 然后计算对应的 \(y\) 满足条件, 然后计算 \(y\) 的质因数个数, 最后分配即可

总结

这一类题一般只能消掉或表示
整除信息可以枚举
求解不同质因数的套路

posted @ 2024-10-10 08:01  Yorg  阅读(68)  评论(0)    收藏  举报