莫比乌斯反演详解
来源:互联网 发布:mac磁盘怎么看空间 编辑:程序博客网 时间:2024/06/04 19:25
前言
由于莫比乌斯反演的应用非常广泛,内容很多但是结论却并不复杂。然而如果没有接触过的话是很难得到超过暴力分的分数,最近的省选也经常考到,所以开单篇记一下公式。
一道经典的莫比乌斯反演题:
求:
也就是说有多少对(i,j)的gcd为d。
莫比乌斯反演公式
具体的证明就不证了,具体可以看度娘,这里只给出结论。
约数的莫比乌斯反演:
若:
则:
倍数的莫比乌斯反演:
若:
则:
莫比乌斯函数
公式中的
接下来介绍一种线性筛的做法来筛出莫比乌斯函数。 if (i % p[j] == 0)
这句话非常关键,也是为什么这个筛法是线性筛的原因。
同样把这个程序的if (i % p[j] == 0)
的存在,也是一个线性筛。
void mobius(){ int i,j; mbs[1] = 1; fo(i,2,N) { if (!vis[i]) {p[++p[0]] = i; mbs[i] = -1;} for (j = 1;j <= p[0] && i * p[j] <= N; j++) { vis[i*p[j]] = 1; if (i % p[j] == 0) {mbs[i*p[j]] = 0; break;} mbs[i*p[j]] = - mbs[i]; } }}
构造
现在不妨记
然后我们构造一个
即:
写成公式的形式就是:
好极了!我们完成了构造,现在让我们反演一下来看看结果如何:
现在看起来问题转换成了如何求
- 莫比乌斯反演—详解
- 莫比乌斯反演详解
- 莫比乌斯反演入门(详解)
- 二项式反演,莫比乌斯反演。
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- 莫比乌斯反演
- C#之ref与out
- Problem D: 字符类的封装
- 通过宏判断VS编译版本以及系统平台
- 新版testFlight中开发人员如何给测试人员推送ios测试包(含使用testFlight要注意的地方)
- angular2学习笔记(3)
- 莫比乌斯反演详解
- 软件包 javax.servlet 不存在
- Ubuntu使用mysql一点心得
- log4j2 自定义级别
- 知识点综合
- 控制对文件的访问
- RabbitMq消息序列化简述
- 二叉树的所有路径
- DAY_05 HTML小白学习笔记