bzoj 4659 题解

版权声明:博主是个蒟蒻,希望大家支持,如果要转发就转发吧,把我链接挂上即可。 https://blog.csdn.net/LightningUZ/article/details/89003801

题目简述

给定 A A B B (多组数据),求

i = 1 n j = 1 n l c m ( i , j ) μ 2 ( g c d ( i , j ) ) \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}lcm(i,j)\mu^2(gcd(i,j))

已经帮您完成放大操作,不用划鼠标了。。。

数据

输入:
5

2 2

4 6

3 4

5 1

23333 33333
输出:
7

148

48

15

451085813
(还需要解释?自己写暴力。。。)

思路

2333纯数论题我最喜欢了!(数论是我小老婆,大老婆是芙兰朵露·斯卡雷特)
显然这题需要莫比乌斯反演(不会?去看pengym的博客或者我的博客。。。)
g c d ( i , j ) = g gcd(i,j)=g (我懒),原式
= i = 1 A j = 1 B i j g μ 2 ( g ) = d = 1 A i = 1 A j = 1 B [ g = d ] μ 2 ( d ) i j d 枚举gcd(i,j),设为d。然后每次找g=d的,这个多想几次就明白了 = d = 1 A i = 1 A d j = 1 B d [ g = 1 ] μ 2 ( d ) i j d 这个就是把i,j换成枚举d的倍数,所以右面也换成了ijd,上限也换成了A/d和B/d = d = 1 A i = 1 A d j = 1 B d μ 2 ( d ) i j d q g μ ( q ) 这个不用解释,就是基本反演式 = d = 1 A q = 1 A d μ ( q ) i = 1 A d j = 1 B d [ q g ] μ 2 ( d ) i j d 这个有点思维量,不过也是基本技巧,如果理解透了莫比乌斯反演式,这个就能懂 = d = 1 A q = 1 A d μ ( q ) i = 1 A d q j = 1 B d q [ 1 g ] μ 2 ( d ) i j d q 2 这个就是把i,j换成了枚举dq的倍数,所以后面多乘一个 q 2 。而且1|g是废话,珂以删掉 = d = 1 A d μ 2 ( d ) q = 1 A d μ ( q ) q 2 ( i = 1 A d q i ) ( j = 1 B d q j ) 这一步就是把一些无关的东西提到了最前面 其中 ( i = 1 A d q i ) ( j = 1 B d q j ) 珂以用高斯求和公式(就是1加到100那个广为人知的故事) O ( 1 ) 求出来 然后前面整除分块,卡卡能过 =\sum\limits_{i=1}^{A}\sum\limits_{j=1}^{B}\frac{ij}{g}\mu^2(g)\\ =\sum\limits_{d=1}^{A} \sum\limits_{i=1}^{A}\sum\limits_{j=1}^{B}[g=d]\mu^2(d)\frac{ij}{d}\\ \text{枚举gcd(i,j),设为d。然后每次找g=d的,这个多想几次就明白了}\\ =\sum\limits_{d=1}^{A} \sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}[g=1]\mu^2(d)ijd\\ \text{这个就是把i,j换成枚举d的倍数,所以右面也换成了ijd,上限也换成了A/d和B/d}\\ =\sum\limits_{d=1}^{A} \sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}\mu^2(d)ijd\sum\limits_{q|g}\mu(q)\\ \text{这个不用解释,就是基本反演式}\\ =\sum\limits_{d=1}^{A}\sum\limits_{q=1}^{\lfloor\frac{A}{d}\rfloor}\mu(q)\sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}[q|g]\mu^2(d)ijd\\ \text{这个有点思维量,不过也是基本技巧,如果理解透了莫比乌斯反演式,这个就能懂}\\ =\sum\limits_{d=1}^{A}\sum\limits_{q=1}^{\lfloor\frac{A}{d}\rfloor}\mu(q)\sum\limits_{i=1}^{\lfloor\frac{A}{dq}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{dq}\rfloor}[1|g]\mu^2(d)ijdq^2\\ \text{这个就是把i,j换成了枚举dq的倍数,所以后面多乘一个} q^2\text{。而且1|g是废话,珂以删掉}\\ =\sum\limits_{d=1}^{A}d\mu^2(d)\sum\limits_{q=1}^{\lfloor\frac{A}{d}\rfloor}\mu(q)q^2(\sum\limits_{i=1}^{\lfloor\frac{A}{dq}\rfloor}i)(\sum\limits_{j=1}^{\lfloor\frac{B}{dq}\rfloor}j)\\ \text{这一步就是把一些无关的东西提到了最前面}\\ \text{其中}\\ (\sum\limits_{i=1}^{\lfloor\frac{A}{dq}\rfloor}i)和(\sum\limits_{j=1}^{\lfloor\frac{B}{dq}\rfloor}j)\\ \text{珂以用高斯求和公式(就是1加到100那个广为人知的故事)}O(1)\text{求出来}\\ \text{然后前面整除分块,卡卡能过}
有一点注意,由于模的是 2 30 2^{30} ,所以珂以让其自然溢出,然后&一下 ( 1 < < 30 ) 1 (1<<30)-1 即可。
代码:

猜你喜欢

转载自blog.csdn.net/LightningUZ/article/details/89003801