Description
题目链接:BZOJ 2818
给定整数 $n$,求 $1\le x,y\le n$ 且 $\gcd(x,y)$ 为素数的数对 $(x,y)$ 有多少对。
数据范围:$1\le n\le 10^7$
Solution
本题和「Luogu 2257」YY 的 GCD(题解) 几乎完全一样,但是本题由于是 单组询问,所以不需要 $O(n)$ 的预处理和 $O(\sqrt n)$ 的单次询问复杂度。
首先我们枚举质数:
对 $\gcd$ 进行套路式的变形:
接下来改变 $j$ 的枚举上界(其中 $-1$ 的原因是 $i=j=1$ 时的答案会被重复统计,因此注意这里的 $-1$ 是在 $\sum_{p\in\text{prime}}$ 中的,而不是在 $\sum_{i=1}^{\left\lfloor\frac{n}{p}\right\rfloor}$ 中的):
此已经可以发现最后一个 $\sum$ 是的值就是 $\varphi(i)$,故原式化为:
所以我们可以线性筛求出 $\varphi(i)$ 的值并做前缀和,枚举 $p\in\text{prime}\ \text{and}\ p\le n$ 并统计答案即可。
时间复杂度:$O(n)$
Code
1 |
|