|
|
|
@ -83,10 +83,51 @@ void get_mobius(int n) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 二、题单
|
|
|
|
|
**[$SP4168$ $SQFREE$ - $Square$-$free$ $integers$](https://www.luogu.com.cn/problem/SP4168)**
|
|
|
|
|
|
|
|
|
|
**题意**
|
|
|
|
|
在数论中,如果一个整数不能被任何一个整数(这个整数不是$1$)的平方整除,我们就称它是一个$Square−freeinteger$(**无平方数因数的数**)。你得数一数!
|
|
|
|
|
|
|
|
|
|
**题解**
|
|
|
|
|
|
|
|
|
|
考虑在$[1, n]$ 中,有多少个数是$x^2$的倍数? 显然是$⌊\frac{n}{x^2}⌋$个。
|
|
|
|
|
|
|
|
|
|
那 $⌊\frac{n}{x^2}⌋$ 就是答案了吗?当然不是,有大量的数被重复计算了。
|
|
|
|
|
|
|
|
|
|
例如 $36$,它等于$2^2\times 3^2$ ,在枚举 $2$ 和 $3$ 的时候它就会被重复计算。
|
|
|
|
|
|
|
|
|
|
怎么办呢?加加减减弄对呗!
|
|
|
|
|
|
|
|
|
|
利用容斥的思想,$1$到$n$以内有平方因数的数有$\large \frac{n}{2^2}+\frac{n}{3^2}+\frac{n}{5^2}-\frac{n}{6^2}...$。
|
|
|
|
|
> **注**:为什么没有$4^2$呢?这是因为$4^2=2^2 \times 2^2$,在计算$2^2$的个数时,已经计算过了,同理,合数都可以拆分成质数的乘积,我们只要计算质数就可以了。
|
|
|
|
|
但是,$6^2=2^2\times 3^2$这样的数字比较特殊,它会被在计算$2^2$时计算一遍,在计算$3^2$时又计算了一遍,计算重复了,需要再扣除掉$\frac{n}{6^2}$个,这就是容斥原理。
|
|
|
|
|
|
|
|
|
|
**$Q$:即然这是容斥原理,那和莫比乌斯函数有什么关系呢?**
|
|
|
|
|
答:你从现实意义上去看看:
|
|
|
|
|
- $2,3,5$都是一个质数因子,它的系数是$1$
|
|
|
|
|
- $6$有两个质数因子,系数就是$-1$,
|
|
|
|
|
这不就是莫比乌斯函数的定义吗?
|
|
|
|
|
|
|
|
|
|
可知以上式子 $\displaystyle =-\sum_{2 \leq d \leq \sqrt{n}} \mu(d)*(n/d^2)$
|
|
|
|
|
所以无平方因数的数就是求补集=$\displaystyle n-(-\sum_{2 \leq d \leq \sqrt{n}} \mu(d)*(n/d^2))=n+\sum_{2 \leq d \leq \sqrt{n}} \mu(d)*(n/d^2)$个。
|
|
|
|
|
|
|
|
|
|
变形合并,$d=1,\mu(d)=\mu(1)=1,n/d^2=n/1=n$,发现这个式子可以合并成$\displaystyle \sum_{1 \leq d \leq \sqrt{n}} \mu(d)*(n/d^2)$
|
|
|
|
|
|
|
|
|
|
> **注**:
|
|
|
|
|
> ① $d>\sqrt{n}$时,$⌊\frac{n}{d^2}⌋$恒等于$0$,只需要枚举到$\sqrt{n}$即可。
|
|
|
|
|
> ② $⌊\frac{n}{d^2}⌋$是整除分块的基本形式,用整除分块优化,给$μ(x)$搞个前缀和。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**[$P4318$ 完全平方数](https://www.luogu.com.cn/problem/P4318)**
|
|
|
|
|
|
|
|
|
|
**题意**
|
|
|
|
|
筛去完全平方数及其的倍数,然后输出第$k$个的值。
|
|
|
|
|
小$X$自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。
|
|
|
|
|
|
|
|
|
|
这天是小$X$的生日,小$W$想送一个数给他作为生日礼物。当然他不能送一个小$X$讨厌的数。他列出了所有小$X$不讨厌的数,然后选取了第$K$个数送给了小$X$。小$X$很开心地收下了。
|
|
|
|
|
|
|
|
|
|
然而现在小$W$却记不起送给小$X$的是哪个数了。你能帮他一下吗?
|
|
|
|
|
|
|
|
|
|
**解法**
|
|
|
|
|
|
|
|
|
|
我们要求这个,就想到把$1$到$k_i$的所有完全平方数和他的倍数筛去,但是一看数据,$1e9$,线性筛必定$T$,那再去想办法进行计算,我们先把$2$的平方$4$的倍数计算出来,在$1$到$k_i$中,有$k_i/4$个$4$的倍数,我们再计算的$16$的倍数个数时候,会发现在计算$4$的倍数个数时候已经把$16$的倍数个数计算过了,这里就重复了,而假设已经计算了$4$和$9$的倍数个数,再去计算$36$的倍数个数就会发现计算了两次,那么就要减去$36$的倍数个数,这里就已经想到可以用 **容斥** 了.这里我们发现这里 **需要枚举质数的平方的次数** ,且奇数偶数符号不相同,就会想到 **莫比乌斯函数**.它计算枚举的边界是$i*i<=n$;我们再用$n$减去计算的出来的从$2$开始的到$k_i$的完全平方数的个数即为所求:
|
|
|
|
|
|
|
|
|
|