【参考】

★浅谈一类积性函数的前缀和 by skywalkert

任之洲数论函数.pdf

论逗逼的自我修养之寒假颓废记 by jiry_2

杜教筛 [学习笔记]【更新中】 by Candy?

【变化技巧总结】

总结下面所有知识含有的变化技巧

1.先枚举gcd值。

2.莫比乌斯反演处理gcd,[gcd(x,y)=1]=Σd|i^d|jμ(d),然后将d提到最前面。

3.★分块取值优化,ans=Σf(d)*g(n/d),其中g(n/d)只有2√n种取值,预处理f(d)的前缀和即可O(√n)。

4.多组询问时,对于ΣdΣe,令T=de,则ΣTΣd|T,后面枚举倍数贡献可以O(n ln n)预处理前缀和。

5.杜教筛:倍数和总数互换,即

$sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}\sum_{d|i}f(d)g(\frac{i}{d})=\sum_{i=1}^{n}\sum_{d=1}^{\frac{n}{i}}f(d)g(i)=\sum_{i=1}^{n}g(i)F(\frac{n}{i})$

用这个变化,对于卷积f*g=h,知二求一。

6.函数为加法时,可以分别统计前缀和再相加,但乘法必须一起统计。

例题:【51nod】1238 最小公倍数之和 V3 杜教筛

1.相同的完全积性函数卷积有奇效(在这题是同阶幂函数卷积)。

2.矩阵转上三角,就可以变成积性函数前缀和的形式。

3.狄利克雷卷积有交换律,结合律,加法分配律。点乘有卷积分配律,即a(b*c)=ab*ac。

4.φ也可以化简[(n,i)=1],不一定用μ。

例题:【Project Euler】530 GCD of Divisors 莫比乌斯反演

1.对于[(a,b)=d],可以将共有因子d提出来并压缩枚举空间。

2.约数个数前缀和可以O(√n),看到可以转化过去。

3.两个Σ1~n,可以合并为枚举乘积,然后变成卷积的形式。

4.复杂度不一定是看到的那样,要好好分析或好好感受。

【积性函数】

积性函数的约数和,前缀和,相互卷积也是积性函数。

1.f(1)=1。

2.性质一:对于n=∏pi^ki,有f(n)=∏f(pi^ki)

性质二:对于完全积性函数,还有f(n)=∏f(pi)^ki以及f(n^k)=f(n)^k

常见的积性函数:

1.d(n)=Σd|n 1,表示n的因子个数,即d=1*1

2.σ(n)=Σd|n d,表示n的因子和,即σ=1*id

3.1(n)=1,恒等函数

4.id(n)=n,单位函数

5.e(n)=[n=1],元函数,即f=f*e

6.φ(n)=Σ[(n,i)=1]*1,欧拉函数

φ*1=id

7.μ(n),莫比乌斯函数,μ(n)=(-1)^k,k为n的素因子个数,有重复素因子时μ=0

μ*1=e

【狄利克雷卷积】

定义两个数论函数f,g的狄利克雷卷积:(f*g)(n)=Σd|nf(d)*g(n/d)。

1.莫比乌斯函数,e(n)=Σd|nμ(d),即e=μ*i。

莫比乌斯反演,由g=f*i,得f=g*μ。(可以看出μ和1互为逆元)

证明:f=g*μ=f*i*μ=f*e=f。

即由g(n)=Σd|nf(d),得f(n)=Σd|ng(d)*μ(n/d)。

类似的,由g(n)=Σn|df(d),得f(n)=Σn|dg(d)*μ(d/n)。

$$\sum_{d|n}\mu(d)=[n=1]\ \ (\mu \times 1=e)$$

2.欧拉函数,n=Σd|nφ(d),即id=φ*i。

$$\sum_{d|n}\varphi(d)=n\ \ (\varphi \times 1=id)$$

证明:考虑n的所有数字x∈[1,n],有(n,x)=d即(n/d,x/d)=1,所以满足(n,x)=d的所有的x的个数为φ(n/d),那么所有n的因子的φ就是答案。

由反演得,φ=id*μ,即φ(n)/n=Σd|nμ(d)/d。

$$\varphi(n)=\sum_{d|n}\frac{n}{d}*\mu(d)\ \ (\mu \times id=\varphi)$$

公式:1~n中与n互质的整数和是为( n*φ(n)+[n=1] )/2,证明:gcd(n,i)=gcd(n,n-i),所以互素数总是成对出现。(但约数和不是n*(n+1)/2-n*φ(n)/2+1……)。

★莫比乌斯反演

【和式Σ变换技巧】

基本法则(具体数学):

1.分配律,Σkc*ak=c*Σkak,即提出与Σ无关的乘数。

2.结合律,将相邻Σ的条件结合或分离。

3.交换律,即Σ的枚举可以改变顺序。

4.一般分配律,Σj,kaj*bk=(Σaj)*(Σbk)

5.多重交换律,当相邻Σ枚举域相关时,需满足:

[j∈J][k∈K(j)]=[k∈K'][j∈J'(k)]

通常J=K'是所有整数集合,第二重根据操控二重和式性质的p(j,k)推出。

6.换元,即更换Σ的枚举元。

7.艾弗森约定,即将Σ底端限制变成条件,如Σi∈Ii = Σi*[i∈I]。

【杜教筛】

参考:浅谈一类积性函数的前缀和 by skywalkert

给定数论函数$f(n)$,求$s(n)=\sum_{i=1}^{n}f(i)$。

考虑找到一个合适的数论函数$g(n)$。

杜教筛基本变化(总值与倍数互换)

$$\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}\sum_{d|i}f(d)g(\frac{i}{d})=\sum_{i=1}^{n}g(i)s(\frac{n}{i})$$

最终

$$g(1)s(n)=\sum_{i=1}^{n}(f*g)(i)-\sum_{i=2}^{n}g(i)s(\frac{n}{i})$$

本质上是构造卷积h=f*g,若h和g的前缀和可以O(1)或O(√n)快速求解,则可以用上式快速求解f的前缀和。

最后将f的前n^(2/3)项预处理,总复杂度O(n^(2/3))。

求N和N/i时,s(i)记忆化到f[N/i]中,f[]数组大小只需要√N。(N变化时要清空数组)

例题:【51nod】1239 欧拉函数之和 求Σφ(i)

复杂度证明:

根据(x/a)/b=x/(ab),杜教筛只用到2√n个值,所以杜教筛的复杂度是:

$$\sum_{i=1}^{\sqrt n}O(\sqrt i)+\sum_{i=1}^{\sqrt n}O(\sqrt{\frac{n}{i}})$$

计算复杂度需要用到积分:

$$\int_{0}^{a}x^n=\frac{1}{n+1}a^{n+1}$$

所以,前半部分的复杂度:

$$\sum_{i=1}^{\sqrt n}O(\sqrt i)=\int_{0}^{\sqrt n}x^\frac{1}{2}\approx \sqrt n^{\frac{1}{2}+1}=O(n^{\frac{3}{4}})$$

后半部分的复杂度:(把√n提出来,最后是n^(3/4))

$$\sum_{i=1}^{\sqrt n}O(\frac{1}{\sqrt i})=\int_{0}^{\sqrt n}x^{-\frac{1}{2}}\approx \sqrt n^{-\frac{1}{2}+1}=O(n^{\frac{1}{4}})$$

最终,复杂度$O(n^{\frac{3}{4}})$,预处理前2/3项后复杂度为$O(n^{\frac{2}{3}})$。(这暂时不太清楚)

转载于:https://www.cnblogs.com/onioncyc/p/8461267.html

【算法专题】积性函数相关推荐

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

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

  2. 【数学专题】莫比乌斯反演与积性函数

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的模板整合计划 目录 莫比乌斯反演 AcWing 2702. problem b AcWing 1358. 约数个数和(莫 ...

  3. 【算法讲7:积性函数(下)】⌈ 加性函数 ⌋ 与 ⌈ 积性函数 ⌋ 与 ⌈ 狄利克雷卷积 ⌋ 详细介绍

    [算法讲7:积性函数(下)] 前置 补充 ⌈\lceil⌈积性函数⌋\rfloor⌋ (乘性函数) 四个最基本的定义 关于积性函数的基本性质 性质一:f(1) 性质二:积性函数的各种传递 性质三:整数 ...

  4. 《算法设计编程实验:大学程序设计课程与竞赛训练教材》——3.3 积性函数的实验范例...

    3.3 积性函数的实验范例 首先,我们必须弄清楚什么是积性函数: 在非数论领域,积性函数是指所有对于任何a和b都有性质f(ab)=f(a)f(b)的函数. 在数论领域,考虑一个函数值为正整数的函数f, ...

  5. 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演

    初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...

  6. 因子和,因子数,1到n的因子和,1到n的因子数(积性函数)

    1 - 求n的因子和 因子和函数σ定义为整数n的所有正因子之和,记为σ(n)  它是一个积性函数 首先对n进行因子分解 (因子分解代码附后) n = p1^a1 * p2^a2 * ~~~ * px ...

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

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

  8. P6222 「P6156 简单题」(反演 + 积性函数线性筛)

    P6156 简单题 推式子 ∑i=1n∑j=1n(i+j)kf(gcd(i,j))gcd(i,j)=∑i=1n∑j=1n(i+j)kμ2(gcd(i,j))gcd(i,j)=∑d=1nμ2(d)dk+ ...

  9. 2021-06-27 记录最近刷过的数论题(整除分块,MillerRabin素性检测,积性函数,重数)

    记录一下最近刷过的数论题 文章目录 LOJ 143. 质数判定 AcWing 197. 阶乘分解 AcWing 199. 余数求和 LOJ #124. 除数函数求和 1 LOJ #125. 除数函数求 ...

最新文章

  1. 常量元素记忆口诀_化学口诀表:帮助学生加深记忆提高解题正确率
  2. openssl私有ca创建
  3. 读书笔记—写给大家看的PPT设计书
  4. WebApi用户登录验证及服务器端用户状态存取
  5. FJOI2018二试游记
  6. PHP对Excel导入导出操作
  7. 用命令创建表空间、用户,并为用户授权、收回权限。
  8. matlab计算三角格网面积,不规则平面图形的面积计算及其MATLAB实现.doc
  9. 探访新疆北部主力气田:推陈出新 “新科技”保供气
  10. 计算机总是重启是怎么回事,电脑老是重启怎么办?重启原因分析及解决方法
  11. python 实现将网页转化成pdf文档
  12. python xlrd 写入已有的excel并保留原excel格式
  13. Word入门教程之插入文字批注(转)
  14. 【论文写作】——设置中英文字体
  15. C# 如何在Word文档中插入艺术字
  16. type-aliases-package不生效问题记录
  17. 【扫盲贴】浅谈38K红外发射接受编码(非常好)
  18. 2020美团秋招笔试题解
  19. 数字电子技术-组合逻辑电路
  20. Android系统签名文件转换为keystore文件

热门文章

  1. 玩转虚拟化VMWare之一: VMWare ESXi 5.0和vSphere Client安装和配置
  2. Windows2003 IIS6.0启用Gzip功能
  3. 暖通专业标准规范大全_中高级职称专业分类改革 机械类十大热门专业分享
  4. Pycharm主题:基于网上一款eyecare主题自制的Hbuilder主题Watermelon
  5. SharePoint 2013 - Callout
  6. slowquery 慢查询
  7. Java-JUC(一):volatile引入
  8. C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo
  9. 2-4. BCD解密(10)
  10. php实现查询上传文件进度