一句话干掉 5 个莫比乌斯反演
作者:互联网
学校题单里总共 8 个莫比乌斯反演,结果被一句话干掉 5 个!!!
标题党.jpg
干掉的题目: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