[HAOI2011]Problem b 莫比乌斯函数

这篇博客介绍了如何利用莫比乌斯函数解决[HAOI2011]Problem b的竞赛问题。通过推导公式,提出了利用前缀和计算gcd(i, j)=k的和,并给出了线性筛计算莫比乌斯函数及整除分块计算的方法,实现了O(n+Tn)的时间复杂度解决方案。" 105801100,6649953,Redis分布式锁的误解锁问题及解决方案,"['分布式系统', 'Redis', '数据库', '并发控制']
摘要由CSDN通过智能技术生成

题目链接

[HAOI2011]Problem b

题目大意

∑ i = x n ∑ j = y m [ gcd ⁡ ( i , j ) = k ] ( 1 ≤ T , x , y , n , m , k ≤ 1 0 5 ) \sum_{i=x}^n\sum_{j=y}^m[\gcd(i,j)=k]\quad(1\le T,x,y,n,m,k\le 10^5) i=xnj=ym[gcd(i,j)=k](1T,x,y,n,m,k105)

推柿子

考虑前缀和计算,令 f ( n , m ) = ∑ i = 1 n ∑ j = 1 m [ gcd ⁡ ( i , j ) = k ] f(n,m)=\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=k] f(n,m)=i=1nj=1m[gcd(i,j)=k] ∑ i = x n ∑ j = y m [ gcd ⁡ ( i , j ) = k ] = f ( n , m ) − f ( x − 1 , m ) − f ( n , y − 1 ) + f ( x − 1 , y − 1 ) \sum_{i=x}^n\sum_{j=y}^m[\gcd(i,j)=k]=f(n,m)-f(x-1,m)-f(n,y-1)+f(x-1,y-1) i=xnj=ym[gcd(i,j)=k]=f(n,m)f(x1,m)f(n,y1)+f(x1,y1)

考虑计算 f ( n , m ) ( n ≤ m ) f(n,m)\quad(n\le m) f(n,m)(nm)
f ( n , m ) = ∑ i = 1 n ∑ j = 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 ∣ n μ ( d ) = [ n = 1 ] ) = ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∑ i = 1 ⌊ n k ⌋ d ∣ i ∑ j = 1 ⌊ m k ⌋ d ∣ j = ∑ d = 1 ⌊ n k ⌋ μ ( d ) ⌊ n k d ⌋ ⌊ m k d ⌋ \begin{aligned}f(n,m)&=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=k]\\&=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}[\gcd(i,j)=1]\\&=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}\sum_{d|\gcd(i,j)}\mu(d)(\sum_{d|n}\mu(d)=[n=1])\\&=\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}d|i\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}d|j\\&=\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)\lfloor\frac{n}{kd}\rfloor\lfloor\frac{m}{kd}\rfloor\\\end{aligned} f(n,m)=i=1nj=1m[gcd(i,j)=k]=i=1knj=1km[gcd(i,j)=1]=i=1knj=1kmdgcd(i,j)μ(d)(dnμ(d)=[n=1])=d=1knμ(d)i=1kndij=1kmdj=d=1knμ(d)kdnkdm
O ( n ) O(n) O(n) 线性筛计算 μ \mu μ,整除分块计算 ∑ d = 1 ⌊ n k ⌋ μ ( d ) ⌊ n k d ⌋ ⌊ m k d ⌋ \sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)\lfloor\frac{n}{kd}\rfloor\lfloor\frac{m}{kd}\rfloor d=1knμ(d)kdnkdm。时间复杂度 O ( n + T n ) O(n+T\sqrt{n}) O(n+Tn )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值