莫比乌斯反演的前置知识

定义

设f,gf,gf,g是数论函数,考虑数论函数hhh满足

h(n)=∑d∣nf(d)g(nd)h(n)=\sum_{d|n}f(d)g(\frac{n}{d})h(n)=d∣n∑​f(d)g(dn​)

则称hhh为fff和ggg的狄利克雷卷积,记作h=f∗gh=f*gh=f∗g,这里的∗*∗表示卷积。

比如h(6)=f(1)∗g(6)+f(2)∗g(3)+f(3)∗g(2)+f(6)∗g(1)h(6)=f(1)*g(6)+f(2)*g(3)+f(3)*g(2)+f(6)*g(1)h(6)=f(1)∗g(6)+f(2)∗g(3)+f(3)∗g(2)+f(6)∗g(1)

性质

  1. 单位函数ϵ\epsilonϵ是狄利克雷卷积的单位元,即对于任意函数fff,有ϵ∗f=f∗ϵ=f\epsilon*f=f*\epsilon=fϵ∗f=f∗ϵ=f。
  2. 狄利克雷卷积满足交换律和结合律。
  3. 如果f,gf,gf,g都是积性函数,那么f∗gf*gf∗g也是积性函数。

许多关系都可以用狄利克雷卷积来表示。

下面用111来表示取值恒为111的常函数,定义幂函数Idk(n)=nk,Id=Id1\text{Id}_{k}(n)=n^k,\text{Id=Id}_1Idk​(n)=nk,Id=Id1​。

除数函数的定义可以写为:

σk=1∗Idk\sigma_k=1*\text{Id}_kσk​=1∗Idk​

欧拉函数的性质可以写为:

Id=φ∗1\text{Id}=\varphi*1Id=φ∗1

计算狄利克雷卷积

设f,gf,gf,g是数论函数,计算fff和ggg的狄利克雷卷积在nnn处的值需要枚举nnn的所有约数。

如果要计算fff和ggg的狄利克雷卷积的前nnn项,可以枚举111到nnn中每个数的倍数,根据调和数的相关结论,这样做的复杂度是O(nlog⁡n)O(n\log n)O(nlogn)。

求函数的逆

狄利克雷卷积有一个性质:对每个f(1)≠0f(1)\neq0f(1)​=0的函数fff,都存在一个函数ggg使得 f∗g=ϵf\ast g=\epsilonf∗g=ϵ

那么我们如何求出一个函数的逆呢?

只需要定义:

g(n)=1f(1)([n=1]−∑i∣n,i≠1f(i)g(ni))g(n)=\frac 1{ f(1)}\left([n=1]-\sum\limits_{i\mid n, i\neq1} f(i) g\left(\frac ni\right)\right)g(n)=f(1)1​⎝⎛​[n=1]−i∣n,i​=1∑​f(i)g(in​)⎠⎞​

这样的话

∑i∣nf(i)g(ni)=f(1)g(n)+∑i∣n,i≠1f(i)g(ni)=[n=1]\begin{aligned}&\quad\sum_{i\mid n} f(i) g\left(\frac ni\right)\\&= f(1) g(n)+\sum_{i\mid n,i\neq1} f(i) g\left(\frac ni\right)\\&=[n=1]\end{aligned}​i∣n∑​f(i)g(in​)=f(1)g(n)+i∣n,i​=1∑​f(i)g(in​)=[n=1]​

最后一步直接把g(n)g(n)g(n)的定义带进去就好

=f(1)∗1f(1)([n=1]−∑i∣n,i≠1f(i)g(ni))+∑i∣n,i≠1f(i)g(ni)= f(1)*\frac{1}{ f(1)}([n = 1] - \sum\limits_{i|n,i\neq1} f(i) g(\frac n i))+ \sum\limits_{i|n,i\neq1} f(i) g(\frac ni)=f(1)∗f(1)1​([n=1]−i∣n,i​=1∑​f(i)g(in​))+i∣n,i​=1∑​f(i)g(in​)

例题

P2303 [SDOI2012]Longge的问题

给定正整数nnn,求

∑i=1ngcd(i,n),n≤232\sum_{i=1}^{n}gcd(i,n),n\leq2^{32}i=1∑n​gcd(i,n),n≤232


枚举gcd\text{gcd}gcd:

KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \sum_{i=1}^{…

枚举nnn的约数直接求。答案是积性的。

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#define int long long
using namespace std;inline int read() {char c = getchar(); int x = 0, f = 1;for ( ; !isdigit(c); c = getchar()) if(c == '-') f = -1; for ( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);return x * f;
}int n, ans;int euler(int x) {int ans = x, rt = sqrt(x);for (int i = 2; i <= rt; i++) {if (x % i == 0) {ans = ans - ans / i;while (x % i == 0) x /= i;}}if (x > 1) ans = ans - ans / x;return ans;
}signed main() {n = read();int x = sqrt(n);for (int i = 1; i <= x; i++) {if (n % i == 0) {ans += euler(n / i) * i;if (i * i != n) ans += euler(i) * (n / i);}}cout << ans << '\n';return 0;
}

Dirichlet卷积相关推荐

  1. 积性函数与Dirichlet卷积 学习小记

    前言 首先感谢 XHM 大佬的悉心指导,我懂得了不少~. 链一下他关于这方面的见解.博客--XHM 的Dirichlet卷积 学习小记 一些定义 回归正题,这次我学习了一下狄利克雷卷积方面的知识. 先 ...

  2. NOI数学:狄利克雷(Dirichlet)卷积

    从零开始的数学12:Dirichlet卷积(1) 从零开始的数学12:Dirichlet卷积(1)_哔哩哔哩_bilibili 从零开始的数学13:Dirichlet卷积(2) 从零开始的数学13:D ...

  3. Dirichlet卷积 学习小记

    定义 定义数论函数fff和g" role="presentation" style="position: relative;">ggg的狄利克雷 ...

  4. 【学习小记】狄利克雷卷积+杜教筛

    Preface 这东西分明就是玄学暴力 用来求简单的数论函数的前缀和,像φ,μφ,\mu这类的东西 当然,约数和,约数个数之类的也是可以的 Text 数论函数是指定义域是整数,陪域是复数的函数 Dir ...

  5. BZOJ 2190: [SDOI2008]仪仗队

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2689  Solved: 1713 [Submit][Sta ...

  6. 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  7. 《算法竞赛中的初等数论》(三)正文 0x30 积性函数(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  8. 【LOJ6713】「EC Final 2019」狄利克雷 k 次根 加强版(狄利克雷生成函数)

    传送门 题解: 我记得 SCOI2019 考完之后我就口胡过这个东西,当时D1T3 超矩形... 考虑 Dirichlet 生成函数:F(x)=∑i≥1fiixF(x)=\sum_{i\geq 1}\ ...

  9. 信奥中的数学 数论篇 相关资料汇总(2022.07.07)

    数论入门书籍推荐 数论入门书籍推荐_dllglvzhenfeng的博客-CSDN博客_数论入门应该看什么书 数学女孩系列书籍 数学女孩系列书籍_dllglvzhenfeng的博客-CSDN博客 信息学 ...

最新文章

  1. 使用特异性特征提取网络辅助分类任务
  2. 皮一皮:直男相亲还想着龙珠...
  3. 安装setuptools与pip
  4. Windows系统文件详解【大全】
  5. html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~
  6. 粮草先行——Android折叠屏开发技术点番外篇之运行时变更处理原则
  7. HTML pattern
  8. 【报告分享】2019年中国数字经济发展指数.pdf(附下载链接)
  9. Word VBA:批量删除多个分段页面
  10. visio用例图箭头怎么画_解析用Visio画UML用例图简明步骤
  11. python找最大值的函数_python求最大值
  12. 201809-4 再卖菜(100分)
  13. 社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟
  14. 浏览器跳不同 不同页面 php,利用js根据不同浏览器自动跳转不同页面
  15. ARM探索之旅 03 | 如何使用 ARM FPU 加速浮点计算
  16. 怎么在edge浏览器下载扩展(插件)
  17. 游戏编程中的人工智能技术
  18. 郭老师的道歉书(给力)
  19. Revit中如何自定义快捷键
  20. AutoCAD2018(cad2018)32位/64位中文版

热门文章

  1. 04-Spring注入(Injection)
  2. html让矩形块向上浮动,CSS的浮动
  3. 人工智能原理学习笔记
  4. 一探究竟:MyBatis的mapper查询接口返回的list会不会是null?
  5. [附源码]计算机毕业设计JAVA基于jsp篮球云网站
  6. pandas dataframe 中 explode()函数用法及效果
  7. opencv中cvCircle的使用方法
  8. 华为手机使用profile闪退问题
  9. 计算机协会活动策划,大学计算机协会活动计划书
  10. TCGA系列--TCGA长链非编码RNA的可视化工具TANRIC