记录学习莫比乌斯的过程。
为什么lqs的T2就出莫比乌斯反演啊
定义
莫比乌斯函数记为(mu(d))
1.当(d=1)时,函数值为1
2.当(d=p_1*p_2*p_3*...*p_k) p为质数时 函数值为((-1)^k)
这条性质的意思是 (d) 分解质因数后没有平方以上的质因子,函数值根据质因子个数决定
3.对于其他值,(mu(d)=0)
性质
- 对于正整数(n),有
[sum_{d|n}mu(d)=[n=1]
]
这是最常用且最好用的式子。
另外,将(d)替换成(gcd(i,j)),即可得到另外一个常用式子
[[gcd(i,j)=1]=sum_{d|gcd(i,j)}mu(d)
]
其中([...])表示括号中条件成立为(1) 否则为 (0)
常见技巧
从一道例题开始。
例1.
求
[sum_{i=1}^nsum_{j=1}^m[gcd(i,j)=1] (n<m))
]
套路:套公式。
[=sum_{i=1}^nsum_{j=1}^msum_{d|gcd(i,j)}mu(d)
]
套路:枚举d 消sigma
(d)的范围在(1-n)之间,我们枚举 (d) , 发现满足 (d) 同时是两个数字 (x,y) 的因数时会统计答案。于是得出下面这个式子
[=sum_{d=1}^n mu(d) imes lfloor frac m d
floor imes lfloor frac n
d
floor]
后面一部分可以使用整数分块在根号时间内解决。
例2
洛谷P2557
参考第一篇题解。设两个函数的真的难以理解。
题目求
[sum_{i=1}^nsum_{j=1}^m[gcd(i,j)in prime]
]
进行一个式子的推。
设(gcd(i,j)=k)
套路:除以k
多枚举一个k,式子变成了这样
[sum_{k=1}^n sum_{i=1}^{lfloor frac n k
floor} sum_{j=1}^{lfloor frac m k
floor} [gcd(i,j)=1]
]
带入公式,得到:
[sum_{k=1}^n sum_{i=1}^{lfloor frac n k
floor} sum_{j=1}^{lfloor frac m k
floor} sum_{d|gcd(i,j)}mu(d)
]
使用套路枚举d,消去两个(sum)
[sum_{d=1}^{lfloor frac n {k}
floor} sum_{k=1}^n mu(d) lfloor frac n {k*d}
floor imes lfloor frac m {k*d}
floor
]
推到这里已经差不多。接下来需要更多奇怪的优化。
设 (T=kd) ,有下面的式子
[sum_{d=1}^{lfloor frac n {k}
floor} sum_{k=1}^n mu(d) lfloor frac n {T}
floor imes lfloor frac m {T}
floor
]
枚举(T),放到前面去。
[sum_{T=1}^{n} lfloor frac n {T}
floor lfloor frac m {T}
floor sum_{k|T,kin prime} mu(frac T k)
]
很好,最后这个东西和(n,m)无关,看起来可以预处理。
枚举质数(k,T)为(k)的倍数,将(f[T])都加上(mu(frac T k))。最后进行一个前缀和操作和整数分块
然后就很愉快的搞掉了这题。