其他分享
首页 > 其他分享> > 一句话干掉 5 个莫比乌斯反演

一句话干掉 5 个莫比乌斯反演

作者:互联网

学校题单里总共 8 个莫比乌斯反演,结果被一句话干掉 5 个!!!

标题党.jpg

Möbius 反演注记

干掉的题目:YY的GCD,数表,DZY Loves Math,数字表格,于神之怒加强版 .


正片开始:

随便一个数论函数 \(f\),你要求

\[\sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j)) \]

首先构造一个数论函数 \(g\),使得 \(g*1=f\)(这可以通过 \(g=f*\mu\) 获得)

于是

\[\begin{aligned}\sum_{i=1}^n\sum_{j=1}^mf(\gcd(i,j))&=\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid\gcd(i,j)}g(d)\\&=\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}g(d)\\&=\sum_{d=1}^n\left\lfloor\dfrac nd\right\rfloor\left\lfloor\dfrac md\right\rfloor g(d)\end{aligned} \]

做完了?

如果 \(f\) 是随便一个函数,假设求一行的时间复杂度为 \(O(f(n))\),那么可以在 \(O(f(n)+n\log\log n)\) 的时间复杂度完成 .

因为 Dirichlet 卷积都是可以 \(O(n\log\log n)\) 的,具体做法可以看 https://lx-2003.blog.luogu.org/mobius-inversion,当然 Dirichlet 前缀和也能做 .

一般我们见到的 \(f\) 都是积性函数,这样可以做到更快 .

因为 \(f,\mu\) 都是积性函数,那么 \(g=f*\mu\) 肯定也是积性函数,于是可以线性筛,怎么筛看具体题目,\(O(n)\) .

如果您比较牛逼,就整除分块套杜教筛,\(O(n^{3/4})\) .

做完了 .

标签:lfloor,log,sum,rfloor,反演,莫比,干掉,函数
来源: https://www.cnblogs.com/CDOI-24374/p/16366119.html