Description
给定正整数\(n\),求有多少有序数对\((a, b)\)满足:
- \(a + b\leq n\)。
- \(a + b\mid b\)。
\(n\leq 10^{14}\)。
Solution
考虑不互质的数对可能很麻烦……因此我们提取\(d = \gcd(a, b)\),将数对表示为\((a'b, b'd)\),此时必有\(a'\perp b’\)。
然后化一下式子得到: \[ \begin{aligned} d(a' + b')&\mid a'b'd^2\\ a'+b'&\mid a'b'd \end{aligned} \] 注意到\(\gcd(a' + b', a') = \gcd(b', a') = 1\),同理\(\gcd(a' + b', b') = 1\),因此\(a' + b'\)只能是\(d\)的约数了。
据此我们可以设\(d = k(a' + b')\),带入\(a + b\leq n\)得\(k(a' + b')^2\leq n\),因此有\(a' + b'\leq\sqrt{n}\)。我们枚举\(i = a' + b'\),那么\(d\)的数量就和\(k\)一样都是\(\lfloor\frac{n}{i^2}\rfloor\)种。
然后考虑知道了\(i\)之后怎么知道分解为互质有序数对的方案数。注意到确定了\(a'\)就确定了整个数对,而且我们知道\(\gcd(a' + b', a') = \gcd(b', a') = 1\),因此必有\(a'\perp i, a< i\),所以数对的方案数为\(\varphi(i)\)。
Code
1 |
|