-
求 i=1∑nj=1∑m[gcd(i,j)=k]。
P3455 [POI2007] ZAP-Queries
i=1∑nj=1∑m[gcd(i,j)=k]=i=1∑⌊n/k⌋j=1∑⌊m/k⌋[gcd(i,j)=1]=i=1∑⌊n/k⌋j=1∑⌊m/k⌋d∣gcd(i,j)∑μ(d)=d∑μ(d)i=1∑⌊n/k⌋[d∣i]j=1∑⌊m/k⌋[d∣j]=d=1∑min(⌊n/k⌋,⌊m/k⌋)μ(d)⌊kdn⌋⌊kdm⌋(gcd 转化)(莫比乌斯反演)(交换求和顺序)(范围内因数个数)
至此,可以使用数论分块解决。预处理出莫比乌斯函数的前缀和即可。
复杂度 O(n+Tn)。
参考代码
-
求 i=a∑bj=c∑d[gcd(i,j)=k]。
P2522 [HAOI2011] Problem b
设 f(n,m)=i=1∑nj=1∑m[gcd(i,j)=k],则原式等于 f(b,d)−f(a−1,d)−f(b,c−1)+f(a−1,c−1)。(容斥原理)
即转化为例 1。
参考代码
-
求 i=1∑nj=1∑m[gcd(i,j)=质数]。
P2257 YY的GCD
多组数据,T≤104,n,m≤107。
i=1∑nj=1∑m[gcd(i,j)=质数]=p为质数∑d=1∑min(⌊n/p⌋,⌊m/p⌋)μ(d)⌊pdn⌋⌊pdm⌋=p为质数∑T=kp,k∈Z∑μ(pT)⌊Tn⌋⌊Tm⌋=T=1∑⌊Tn⌋⌊Tm⌋p为质数,p∣T∑μ(pT)(令 T=pd )(交换求和顺序)
令 f(n)=p为质数,p∣n∑μ(pn)。考虑在线性筛过程中求出 f。
设 n 的最小质因数为 p0,n′=n/p0。若n′modp0=0,f(n)=μ(n′),否则 f(n)=−f(n′)+μ(n′)。
证明:
-
若 n′modp0=0:
f(n)=p为质数,p∣n′∑μ(pn′⋅p0)。
求和中,当 p=p0 时,pn′⋅p0 一定含有 p02 作为因数,则 μ(pn′⋅p0)=0,无需计算。因此 f(n)=μ(p0n′⋅p0)=μ(n′)。
-
若 n′modp0=0
f(n)=p为质数,p∣n′∑μ(pn′⋅p0)+μ(p0n)。
前面的求和每一项都加入了一个新的因数,所以 μ(pn′⋅p0)=−μ(pn′)。后面即为 μ(n′)。因此加起来就是 −f(n′)+μ(n′)。
之后对 f 求前缀和,然后数论分块即可。
复杂度 O(n+Tn)。(认为 n,m 同阶)
参考代码
-
求 i=1∑nj=1∑mlcm(i,j)。对 20101009 取模。
P1829 [国家集训队] Crash的数字表格 / JZPTAB
i=1∑nj=1∑mlcm(i,j)=i=1∑nj=1∑mgcd(i,j)ij=d∑i=1∑n[d∣i]j=1∑m[d∣j]dij=d∑di=1∑⌊n/i⌋j=1∑⌊m/i⌋ij[gcd(i,j)=1](lcm性质)(枚举 gcd)(将i,j用i/d,j/d代换)
令f(n,m)记g(n)则f(n,m)=i=1∑nj=1∑mij[gcd(i,j)=1]=i=1∑nj=1∑mijd∣gcd(i,j)∑μ(d)=d∑μ(d)i=1∑n[i∣d]ij=1∑m[j∣d]j=d∑μ(d)d2i=1∑⌊n/i⌋ij=1∑⌊m/i⌋j=2n(n+1),=d∑μ(d)d2g(⌊n/i⌋)g(⌊m/i⌋)(莫比乌斯反演)(交换求和顺序)(将i,j用i/d,j/d代换)
则 f(n,m) 可以采用数论分块求出。则原式可再套一层数论分块求出。
参考代码