莫比乌斯反演例题
- 整除分块
- 例题
-
- [NOI2010day1]T1-能量采集
- [ B Z O J 2820 Y Y 的 G C D BZOJ2820 \;YY的GCD BZOJ2820YY的GCD](http://192.168.1.105/homework/974/problem/898)
- [[SDOI2015] 约数个数和](http://192.168.1.105/homework/974/problem/897)
- [ B Z O J 2301 P r o b l e m b BZOJ2301 \;Problem\; b BZOJ2301Problemb](http://192.168.1.105/homework/974/problem/891)
- [BZOJ4407 于神之怒加强版](http://192.168.1.105/homework/974/problem/895)
- 【BZOJ2693】jzptab最小公倍数之和
- [[bzoj3529-Sdoi2014] 数表](http://192.168.1.105/homework/975/problem/894)
- [BZOJ3561 DZY Loves Math VI](http://192.168.1.105/homework/975/problem/893)
整除分块
当运算中有上取整或下取整的时候,用整除分块可以优化复杂度哦(当然,莫比乌斯反演最明显)
经典例题:
(莫比乌斯一大堆,都在下面了)
C F 1603 C E x t r e m e E x t e n s i o n CF\;1603C\; Extreme\; Extension CF1603CExtremeExtension
例题
尽量把一些典型的写出来,莫比乌斯还是多写写公式好
[NOI2010day1]T1-能量采集
求 ∑ i = 1 n ∑ j = 1 m 2 × g c d ( i , j ) − 1 \sum_{i=1}^n\sum_{j=1}^m2×gcd(i,j)−1 i=1∑nj=1∑m2×gcd(i,j)−1
那么只需要处理 ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum_{i=1}^n\sum_{j=1}^mgcd(i,j) i=1∑nj=1∑mgcd(i,j)
= ∑ d = 1 n d ∑ d ∣ i ∑ d ∣ j [ g c d ( i , j ) = 1 ] =\sum_{d=1}^nd\sum_{d|i}\sum_{d|j}[gcd(i,j)=1] =d=1∑ndd∣i∑d∣j∑[gcd(i,j)=1]
= ∑ k = 1 n ∑ d = 1 ⌊ n d ⌋ d ∑ i = 1 ⌊ n k d ⌋ ∑ j = 1 ⌊ m k d ⌋ μ ( k ) =\sum_{k=1}^n\sum_{d=1}^{\lfloor \frac{n}{d} \rfloor}d\sum_{i=1}^{\lfloor \frac{n}{kd} \rfloor}\sum_{j=1}^{\lfloor \frac{m}{kd} \rfloor}\mu(k) =k=1∑nd=1∑⌊dn⌋di=1∑⌊kdn⌋j=1∑⌊kdm⌋μ(k)
= ∑ k = 1 n μ ( k ) ∑ d = 1 ⌊ n d ⌋ d ⌊ n k d ⌋ ⌊ m k d ⌋ =\sum_{k=1}^n\mu(k)\sum_{d=1}^{\lfloor \frac{n}{d} \rfloor}d\lfloor \frac{n}{kd} \rfloor\lfloor \frac{m}{kd} \rfloor =k=1∑nμ(k)d=1∑⌊dn⌋d⌊kdn⌋⌊kdm⌋
令 k d = x kd=x kd=x
则 原式 = ∑ x = 1 n ⌊ n x ⌋ ⌊ m x ⌋ ∑ d ∣ x μ ( x d ) d =\sum_{x=1}^n\lfloor \frac{n}{x} \rfloor\lfloor \frac{m}{x} \rfloor\sum_{d|x}\mu(\frac{x}{d})d =x=1∑n⌊xn⌋⌊xm⌋d∣x∑μ(dx)d
则对于每一个x,去枚举每一个k进行预处理(因为这样可以直接把 μ = 0 \mu=0 μ=0的情况判掉),最后用整除分块求解
for(int k=1;k<=x;k++)
{
if(!mu[k]) continue;
for(int X=k;X<=x;X+=k) F[X]+=mu[k]*(X/k);
}
for(int i=1;i<=x;i++) F[i]+=F[i-1];
for(int l=1,r;l<=n;l=r+1)
{
r=min(n/(n/l),m/(m/l));
ans+=(F[r]-F[l-1])*(n/l)*(m/l);
}
B Z O J 2820 Y Y 的 G C D BZOJ2820 \;YY的GCD BZOJ2820YY的GCD
与上一题差别不大,把枚举每个 d d d改成枚举每个质数即可
[SDOI2015] 约数个数和
首先声明这个函数的一个性质:
d ( i j ) = ∑ x ∣ i ∑ y ∣ j [ g c d ( x , y ) = 1 ] d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1] d(ij)=x∣i∑y∣j∑[gcd(x,y