题目链接
题目大意
给出n,求出满足以下两个条件的数对(a,b)的数量
$1. 1\le a<b \le n$
做法
对于数对$(a,b)$,令$g=gcd(a,b)$,再令$p*g=a,q*g=b$
那么有$(p*g+q*g)|(p*g*q*g)$
两边同时约掉一个g,$(p+q)|(p*q+g)$
由于$p,q$互质,所以$(p+q)$与$(p*q)$也一定互质,这个结论应该还是比较显然的。
所以还要满足整除关系的话,$g$一定是$(p+q)$的倍数,我们令$g=k*(p+q)$
别忘了我们还有第一个限制条件,我们将b代入。
$b=g*q=k*(p+q)*q\le n$
显然$q\le \sqrt n$
令$m=\sqrt{n}$
枚举$q$,可以得到
看到这个$[gcd(x,y)==1]$,想到莫比乌斯反演
还是老套路,改为枚举$d$和倍数
再进行一步简单的变形,改为枚举$i+j$和$i$
我们先枚举$d$,再枚举$i$,根据调和级数,这一步的复杂度是$O(m*logm)$的,有了$d$和$i$了之后,再对$j$整除分块,复杂度大概是$O(m^{\frac{3}{2}}*logm)$,也就是$O(n^{\frac{3}{2}}*log\sqrt n)$
代码
1 |
|