Processing math: 100%

莫比乌斯反演学习笔记

前言

本文只是作者学习莫比乌斯反演后做的相关笔记,可能并不适合入门。

基础

莫比乌斯函数

x=pα11×pα22××pαkk

则:

μ(x)={1x=10αi>1(1ik)(1)kotherwise

一个基本性质

S(n)=d|nμ(d)

S(n)=[n=1]

证明略。

一个简单结论

[gcd(i,j)=1]d|i,d|jμ(d)

第一个式子

F(n)=d|nf(d) f(n)=d|nμ(d)F(nd)

证明:

f(n)=d|nμ(d)F(nd)=d|nμ(d)i|ndf(i)=i|nf(i)d|niμ(d)=i|nf(i)S(ni)=f(n)

第二个式子

F(n)=n|df(d) f(n)=n|dμ(dn)F(d)

证明:

d=dn

f(n)=n|dμ(dn)F(d)=n|dμ(dn)d|if(i)=n|if(i)d|niμ(d)=n|if(i)S(ni)=f(n)

值得注意的是,我们在做题中常用的是第二个式子。

例题

[HAOI2011]Problem b

题意:求 axbcyd[gcd(x,y)=k]

S(a,b)=1xa1yb[gcd(x,y)=k]

可以通过二维前缀和的方式转化问题,答案即为 S(b,d)S(a1,d)S(b,c1)+S(a1,c1)

接下来有两种方法求解。

方法一:

n=akm=bk

ax=1by=1[gcd(x,y)=k]=nx=1my=1[gcd(x,y)=1]=nx=1my=1d|gcd(x,y)μ(d)=nx=1my=1d|x,d|yμ(d)=min(n,m)d=1μ(d)ndmd1=min(n,m)d=1μ(d)ndmd

方法二:

F(n)=ax=1by=1[n|gcd(x,y)]=anbnf(n)=ax=1by=1[gcd(x,y)=n]

很显然有:F(n)=n|df(d)

莫比乌斯反演得到:f(n)=n|dμ(dn)F(d)

d=dna=anb=bn

推式子:

f(n)=n|dμ(dn)F(d)=n|dμ(dn)anbn=dμ(d)adnbdn=dμ(d)adbd

然后整除分块即可。

代码:

posted @   csxsi  阅读(74)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C#使用yield关键字提升迭代性能与效率
· 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
· 4. 使用sql查询excel内容
点击右上角即可分享
微信分享提示