P3327 [SDOI2015] 约数个数和

P3327 [SDOI2015] 约数个数和

题目描述

给定 nm。求:

i=1nj=1mσ0(ij)

σ0 表示因数个数。

解题思路

首先一个很重要的性质

σ0(xy)=i|xj|y[gcd(i,j)=1]

证明比较复杂,可以感性理解。

得到这个性质之后:

i=1nj=1mσ0(ij)

变成:

i=1nj=1mx|iy|j[gcd(x,y)=1]

改变枚举顺序:

x=1ny=1mnxmy[gcd(x,y)=1]

定义函数:

f(x)=i=1nj=1mnimj[gcd(i,j)=x]

g(x)=x|df(d)

有:

g(x)=i=1nj=1mnimj[x|gcd(i,j)]

提出 x

g(x)=i=1nxj=1mxnximxj

根据上文定义,所求答案为 f(1)

莫比乌斯反演:

f(x)=x|dμ(dx)g(d)

所以所求 f(1) 即为:

f(1)=dμ(d)g(d)

如何快速求出 g(x)

g(x)=i=1nxnxij=1mxmxj

应用分配律不难理解。

定义:

s(x)=ixxi

可以 O(nn) 预处理。

则:

g(x)=s(nx)s(mx)

带回 f(1) 表达式:

f(1)=dmin(n,m)μ(d)s(nx)s(mx)

整除分块即可。

总时间复杂度 O(nn+Tn)

参考代码

posted @   DeepSeaSpray  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示