模板:莫比乌斯反演(数论)

文章目录

  • 前言
  • 整除分块
    • 代码
  • 积性函数
  • 线性筛
  • 狄利克雷卷积
  • 莫比乌斯反演
  • trick

所谓莫比乌斯反演,就是莫比乌斯进行的反演

(逃)

前言

在一些需要整除的式子和 gcd⁡,lcm⁡\gcd,\operatorname{lcm}gcd,lcm 等问题中发挥作用。

整除分块

整除分块是莫反的必要前置。

结论:

对于 i≤ni\le nin,满足 ⌊nx⌋=⌊ni⌋\lfloor\dfrac{n}{x}\rfloor=\lfloor\dfrac{n}{i}\rfloorxn=in 的最大的 xxx⌊n⌊ni⌋⌋\lfloor\dfrac{n}{\lfloor\frac{n}{i}\rfloor}\rfloorinn

证明:
k=⌊ni⌋k=\lfloor\dfrac{n}{i}\rfloork=in,那么就有 n=i⋅k+p(0≤p<i,p=nmodi)n=i\cdot k+p\pod{0\le p<i,p=n\bmod i}n=ik+p(0p<i,p=nmodi),设 x=i+dx=i+dx=i+d,同理有 n=(i+d)⋅k+p′(0≤p′<x,p′=nmodx)n=(i+d)\cdot k+p'\pod{0\le p'<x,p'=n\bmod x}n=(i+d)k+p(0p<x,p=nmodx),化简得 p′=p−dkp'=p-dkp=pdk,由于 p′>0p'>0p>0,有 d<⌊pk⌋d<\lfloor\dfrac{p}{k}\rfloord<kp
那么就有:
xmax=i+dmaxx_{max}=i+d_{max}xmax=i+dmax
=i+⌊pk⌋=i+\lfloor\frac{p}{k}\rfloor=i+kp
=i+⌊nmodik⌋=i+\lfloor\frac{n\bmod i}{k}\rfloor=i+knmodi
=⌊i+n−⌊ni⌋⋅i⌊ni⌋⌋=\lfloor i+\frac{n-\lfloor \dfrac{n}{i}\rfloor\cdot i}{\lfloor\dfrac{n}{i}\rfloor}\rfloor=i+innini
=⌊n⌊ni⌋⌋=\lfloor \frac{n}{\lfloor\dfrac{n}{i}\rfloor}\rfloor=inn
证毕。

代码

(计算因数个数的前缀和)

ll calc(ll x){if(x<=0) return 0ll ans=0;for(ll l=1,r;l<=x;l=r+1){r=x/(x/l);(ans+=1ll*(r-l+1)*(x/l))%=mod;}return ans;
}

积性函数

定义:

如果 f:Z+→Cf:\mathbb{Z^+}\to \mathbb{C}f:Z+C,则称 f(n)f(n)f(n) 为一个数论函数
如果 f(n)f(n)f(n) 为一个数论函数,且对于 p⊥qp\perp qpqf(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q),则称 f(n)f(n)f(n) 为一个积性函数
如果 f(n)f(n)f(n) 为一个积性函数,且对于任意 p,qp,qp,qf(pq)=f(p)f(q)f(pq)=f(p)f(q)f(pq)=f(p)f(q),则称 f(n)f(n)f(n) 为一个完全积性函数

一个重要的性质:

对于 p⊥q,d1∣p,d2∣1p\perp q,d_1|p,d_2|1pq,d1p,d21,则有 (d1d2)∣(pq)(d_1d_2)|(pq)(d1d2)(pq)

证明:结合基本算数定理,d1,d2d_1,d_2d1,d2 必然没有共同因子,相乘后各个因子的次数还是不超过原来的 p,qp,qp,q 对应位置的次数。

常见的积性函数:

  1. 除数函数:σk(n)=∑d∣ndk\sigma_k(n)=\sum_{d|n}d^kσk(n)=dndk

证明:
p⊥q→σk(p)σk(q)=(∑d1∣pd1k)(∑d2∣qd2k)=∑(d1d2)∣(pq)(d1d2)k=σk(pq)p\perp q\to\sigma_k(p)\sigma_k(q)=(\sum_{d_1|p}d_1^k)(\sum_{d_2|q}d_2^k)=\sum_{(d_1d_2)|(pq)}(d_1d_2)^k=\sigma_k(pq)pqσk(p)σk(q)=(d1pd1k)(d2qd2k)=(d1d2)(pq)(d1d2)k=σk(pq)

  1. 约数个数函数:τ(n)=σ0(n)=∑d∣n1\tau(n)=\sigma_0(n)=\sum_{d|n}1τ(n)=σ0(n)=dn1

  2. 约数和函数:σ(n)=∑d∣nd\sigma(n)=\sum_{d|n}dσ(n)=dnd

  3. 欧拉函数:φ(n)=∑i=1n[gcd⁡(i,n)=1]\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]φ(n)=i=1n[gcd(i,n)=1]

证明:
p⊥q→φ(p)φk(q)=(p∏a∈prime,a∣pa−1a)(q∏b∈prime,b∣qb−1b)=pq∏c∈prime,c∣pqc−1c=φ(pq)p\perp q\to\varphi_(p)\varphi_k(q)=(p\prod_{a\in prime,a|p}\dfrac{a-1}{a})(q\prod_{b\in prime,b|q}\dfrac{b-1}{b})=pq\prod_{c\in prime,c|pq}\dfrac{c-1}{c}=\varphi(pq)pqφ(p)φk(q)=(paprime,apaa1)(qbprime,bqbb1)=pqcprime,cpqcc1=φ(pq)

性质:φ(n)=∑i=1n[gcd⁡(i,n)=1]∗i=φ(n)+[n==1]2\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]*i=\dfrac{\varphi(n)+[n==1]}{2}φ(n)=i=1n[gcd(i,n)=1]i=2φ(n)+[n==1]
证明:对于 gcd⁡(d,n)=1\gcd(d,n)=1gcd(d,n)=1,同样有 gcd⁡(n−d,n)=1\gcd(n-d,n)=1gcd(nd,n)=1,所有和 nnn 互质的数都是对称分布的。

  1. 莫比乌斯函数:μ(n)\mu(n)μ(n)μ(1)=1\mu(1)=1μ(1)=1,对于无平方因子的数 n=∏ikpin=\prod_i^k p_in=ikpiμ(n)=(−1)k\mu(n)=(-1)^kμ(n)=(1)k;对于有平方因子的数 nnnμ(n)=0\mu(n)=0μ(n)=0
  2. 元函数:e(n)=[n=1]e(n)=[n=1]e(n)=[n=1]。完全积性。
  3. 恒等函数:I(n)=1I(n)=1I(n)=1。完全积性。也可写作 1(n)=11(n)=11(n)=1
  4. 单位函数:id(n)=nid(n)=nid(n)=n。完全积性。
  5. 恒等函数:idk(n)=nkid^k(n)=n^kidk(n)=nk。完全积性。

线性筛

利用线性筛筛出 μ\muμ 这样的积性函数。

int mu[N];
int p[N],tot,vis[N];
void init(int n){mu[1]=1;for(int i=2;i<=n;i++){if(!vis[i]) vis[i]=1,mu[i]=-1,p[++tot]=i;for(int j=1;j<=tot&&p[j]<=n/i;j++){vis[i*p[j]]=1;if(i%p[j]==0){mu[i*p[j]]=0;break;}mu[i*p[j]]=-mu[i];}}
}

狄利克雷卷积

定义:

对于数论函数 f,gf,gf,gh(n)=f∗g=∑d∣nf(d)g(nd)h(n)=f*g=\sum_{d|n}f(d)g(\dfrac{n}{d})h(n)=fg=dnf(d)g(dn) 叫做 f,gf,gf,g狄利克雷卷积
狄利克雷卷积可以理解为乘法意义上的卷积,满足交换律、分配律,结合律。

f,gf,gf,g 均为积性函数,那么 h=f∗gh=f*gh=fg 也是积性函数。

证明:p⊥q→h(p)h(q)=(∑d1∣pf(d1)g(pd1))(∑d2∣qf(d2)g(qd2))=∑(d1d2)∣(pq)f(d1)f(d2)g(pd1)g(qd2)=∑(d1d2)∣(pq)f(d1d2)g(pqd1d2)=h(pq)p\perp q\to h(p)h(q)=(\sum_{d_1|p}f(d_1)g(\frac{p}{d_1}))(\sum_{d_2|q}f(d_2)g(\frac{q}{d_2}))=\sum_{(d_1d_2)|(pq)}f(d_1)f(d_2)g(\dfrac{p}{d_1})g(\dfrac{q}{d_2})=\sum_{(d_1d_2)|(pq)}f(d_1d_2)g(\dfrac{pq}{d_1d_2})=h(pq)pqh(p)h(q)=(d1pf(d1)g(d1p))(d2qf(d2)g(d2q))=(d1d2)(pq)f(d1)f(d2)g(d1p)g(d2q)=(d1d2)(pq)f(d1d2)g(d1d2pq)=h(pq)

1∗1=τ1*1=\tau11=τ
1∗id=σ1*id=\sigma1id=σ

证明:直接展开即可得。

∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n==1]dnμ(d)=[n==1],即 μ∗1=e\mu*1=eμ1=e,两者互为逆元。

证明:μ(1)=0\mu(1)=0μ(1)=0 显然成立,对于 n>1n>1n>1,由于含平方因子的 μ\muμ 均为0,只需要考虑 nnn 所有不含平方因子的因数。
nnnmmm 个质因子,从这些质因子中任意选择(每项最多一个)构成因数,就有:∑d∣nμ(d)=∑i=0m(mi)(−1)i=(1−1)m=0\sum_{d|n}\mu(d)=\sum_{i=0}^m\binom{m}{i}(-1)^i=(1-1)^m=0dnμ(d)=i=0m(im)(1)i=(11)m=0

[gcd⁡(i,j)=1]=∑d∣gcd⁡(i,j)μ(d)[\gcd(i,j)=1]=\sum_{d|\gcd(i,j)}\mu(d)[gcd(i,j)=1]=dgcd(i,j)μ(d)

证明:直接令上一个式子 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n==1]dnμ(d)=[n==1]n=gcd⁡(i,j)n=\gcd(i,j)n=gcd(i,j) 即可得。

φ=μ∗id\varphi=\mu*idφ=μid

证明:(μ∗id)(n)=∑d∣nμ(d)nd(\mu*id)(n)=\sum_{d|n}\mu(d)\dfrac{n}{d}(μid)(n)=dnμ(d)dn,右边的式子就可以理解成容斥筛掉所有和 nnn 不互质的数。

id=φ∗1,n=id(n)=∑d∣nφ(n)id=\varphi*1,n=id(n)=\sum_{d|n}\varphi(n)id=φ1,n=id(n)=dnφ(n)

证明:id=id∗e=id∗μ∗1=φ∗1id=id*e=id*\mu*1=\varphi*1id=ide=idμ1=φ1

莫比乌斯反演

g(n)=∑d∣nf(d)g(n)=\sum_{d|n}f(d)g(n)=dnf(d),那么 f(n)=∑d∣nμ(d)g(nd)f(n)=\sum_{d|n}\mu(d)g(\frac{n}{d})f(n)=dnμ(d)g(dn)

证明:

  1. f=f∗1∗μ=g∗μf=f*1*\mu=g*\muf=f1μ=gμ
  2. ∑d∣nμ(d)g(nd)=∑d∣nμ(d)∑k∣ndf(k)=∑kd∣nμ(d)f(k)=∑k∣nf(k)∑d∣nkμ(d)\sum_{d|n}\mu(d)g(\dfrac{n}{d})=\sum_{d|n}\mu(d)\sum_{k|\frac{n}{d}}f(k)=\sum_{kd|n}\mu(d)f(k)=\sum_{k|n}f(k)\sum_{d|\frac{n}{k}}\mu(d)dnμ(d)g(dn)=dnμ(d)kdnf(k)=kdnμ(d)f(k)=knf(k)dknμ(d)
    =∑k∣nf(k)[nk=1]=f(n)=\sum_{k|n}f(k)[\dfrac{n}{k}=1]=f(n)=knf(k)[kn=1]=f(n)

g(n)=∑n∣df(d)g(n)=\sum_{n|d}f(d)g(n)=ndf(d),那么 f(n)=∑n∣dμ(dn)g(d)f(n)=\sum_{n|d}\mu(\dfrac{d}{n})g(d)f(n)=ndμ(nd)g(d)

证明:∑n∣dμ(dn)g(d)=∑k=1∞μ(k)g(kn)=∑k=1∞μ(k)∑d∣knf(d)=∑n∣df(d)∑k∣dnμ(k)\sum_{n|d}\mu(\dfrac{d}{n})g(d)=\sum_{k=1}^{\infty}\mu(k)g(kn)=\sum_{k=1}^{\infty}\mu(k)\sum_{d|kn}f(d)=\sum_{n|d}f(d)\sum_{k|\frac{d}{n}}\mu(k)ndμ(nd)g(d)=k=1μ(k)g(kn)=k=1μ(k)dknf(d)=ndf(d)kndμ(k)
=∑n∣df(d)[dn=1]=f(n)=\sum_{n|d}f(d)[\dfrac{d}{n}=1]=f(n)=ndf(d)[nd=1]=f(n)

trick

  1. 枚举倍数的一种灵活的变形:g(d)=∑d∣inf(i)=∑i=1⌊nd⌋f(i⋅d)g(d)=\sum_{d|i}^nf(i)=\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i\cdot d)g(d)=dinf(i)=i=1dnf(id)
    很显然,但有时能发挥大作用。
  2. [gcd⁡(i,j)=1]=∑d∣gcd⁡(i,j)μ(d)[\gcd(i,j)=1]=\sum_{d|\gcd(i,j)}\mu(d)[gcd(i,j)=1]=dgcd(i,j)μ(d)。再写一遍是因为它太重要了。
  3. 关于因数个数函数:τ(i⋅j)=∑x∣i,y∣j[gcd⁡(x,y)=1]\tau(i\cdot j)=\sum_{x|i,y|j}[\gcd(x,y)=1]τ(ij)=xi,yj[gcd(x,y)=1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[TJOI2013]拯救小矮人(反悔贪心证明),「ICPC World Finals 2019」Hobson 的火车(基环树,差分)

2021-09-07 test[TJOI2013]拯救小矮人「ICPC World Finals 2019」Hobson 的火车[TJOI2013]拯救小矮人 luogu4823 考试题目的数据加强为2e5&#xff0c;所以此题做法应为O(nlog⁡n)O(n\log n)O(nlogn)的反悔贪心 这种有多元属性&#xff0c;选择最优的问题 如果发现简单的贪心…

Dotnet全平台下APM-Trace探索

随着支撑的内部业务系统越来越多&#xff0c;向着服务化架构进化&#xff0c;在整个迭代过程中&#xff0c;会逐渐暴露出以下问题。传统依赖于应用服务器日志等手段的排除故障原因的复杂度越来越高&#xff0c;传统的监控服务已经无法满足需求。终端--> Nginx --> IIS --…

生成函数全家桶

文章目录有用的式子1.&#xff08;牛顿二项式定理&#xff09;2.普通生成函数&#xff08;OGF&#xff09;常见封闭形式&#xff1a;1.2.3.4.指数生成函数&#xff08;EGF&#xff09;排列与圆排列有用的式子 1.&#xff08;牛顿二项式定理&#xff09; 我们把组合数的定义推…

2020年牛客多校第五场C题-easy(纯组合计数不要生成函数的做法)

文章目录descriptionsolutioncodedescription 有TTT组测试数据 对于两个长度为KKK的数列{a}\{a\}{a}和{b}\{b\}{b}&#xff0c;满足∑i1KaiN,∑i1KbiM\sum_{i1}^Ka_iN,\sum_{i1}^Kb_iM∑i1K​ai​N,∑i1K​bi​M 对于这两个数列&#xff0c;定义权值为P∏i1Kmin⁡(ai,bi)P\p…

部署Chart应用并使用.net core读取Kubernetes中的configMap

上一篇文章讲了 k8s使用helm打包chart并上传到腾讯云TencentHub&#xff0c;今天就讲一下使用Helm部署应用并使用configMap代替asp.net core 中的appsettings.json文件。把Chart上传到TencentHub之后&#xff0c;我们就可以通过腾讯云的容器服务&#xff0c;直接部署Helm应用了…

Vases and Flowers HDU - 4614

Vases and Flowers HDU - 4614 题意: 一排空瓶子放花&#xff0c;操作1&#xff1a;从第x个瓶子开始放花&#xff0c;放y朵花&#xff0c;每个瓶子就一朵花&#xff0c;如果碰到已经有花的瓶子跳过这个瓶子&#xff0c;看下一个&#xff0c;当花没了&#xff0c;或者瓶子不够…

洛谷P3327:[SDOI2015]约数个数和(莫比乌斯反演)

枚举倍数的一种灵活的变形&#xff1a;g(d)∑d∣inf(i)∑i1⌊nd⌋f(i⋅d)g(d)\sum_{d|i}^nf(i)\sum_{i1}^{\lfloor\frac{n}{d}\rfloor}f(i\cdot d)g(d)∑d∣in​f(i)∑i1⌊dn​⌋​f(i⋅d) 很显然&#xff0c;但有时能发挥大作用。 其实本质还是要理解西格玛究竟是在算什么 解析…

EFCore Lazy Loading + Inheritance = 干净的数据表 (一)

前言α角 与 β角关于α角 与 β角的介绍&#xff0c;请见上文 如何用EFCore Lazy Loading实现Entity Split。本篇会继续有关于β角的彩蛋在等着大家去发掘。/斜眼笑其他本篇的程序&#xff0c;可以在 https://github.com/kentliu2007/EFCoreDemo/tree/master/InheritanceWithE…

专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box

文章目录[JSOI2007]建筑抢修[USACO12FEB]Cow Coupons GCF1251E2 Voting (Hard Version)CF436E Cardboard Box[JSOI2007]建筑抢修 luogu4053 将建筑按照结束时间从小到大排序 然后记录一下已经修理的建筑总共的花费时间 如果花费时间加上现在这个建筑的修建时间超过了这个建…

Max Sum Plus Plus HDU - 1024

Max Sum Plus Plus HDU - 1024 题意&#xff1a; 给你n个数&#xff0c;选m个子段&#xff0c;各个子段连续且不相交&#xff0c;长度可以为1&#xff0c;设maxn为各个子区间的和&#xff0c;求最大的maxn。 题解&#xff1a; 设dp[i][j]表示前j个数分成i段的最大值 对于第…

模板:杜教筛(莫比乌斯反演、数论)

所谓杜教筛&#xff0c;就是dms教给我们的筛 &#xff08;逃&#xff09; 前言 与其说算法&#xff0c;不如说是技巧。 可以在低于线性的时间复杂度&#xff08;准确的说是 O(n23)O(n^{\frac{2}{3}})O(n32​)&#xff09;内完成对积性函数的前缀和计算。 解析 考虑求函数 f…

程序员过关斩将--快速迁移10亿级数据

菜菜呀&#xff0c;咱们业务BJKJ有个表数据需要做迁移程序员主力 Y总现在有多少数据&#xff1f;菜菜大约21亿吧&#xff0c;2017年以前的数据没有业务意义了&#xff0c;给你半天时间把这个事搞定&#xff0c;绩效给你A程序员主力 Y总有绩效奖金吗&#xff1f;菜菜钱的事你去问…

[2021-09-09 T2] 就差⼀点——冒泡排序和反序表之间不为人知的秘密

就差一点解题报告descriptionsolutioncodedescription 题目描述 冒泡排序是⼀个简单的排序算法&#xff0c;其时间复杂度为O(n2)O(n^2)O(n2) 有⼀个大小为nnn的排列p1,...,pnp_1,...,p_np1​,...,pn​&#xff0c;⼩明想对这个排列进⾏冒泡排序&#xff0c;于是写了下⾯这份…

CodeForces - 76E Points

CodeForces - 76E Points 题意&#xff1a; 给你n个点的坐标&#xff0c;求所有一对点之间的距离的平方和 n<100000 题解&#xff1a; 直接暴力n2肯定不行&#xff0c;我们把这个的式子列出来&#xff1a; 代码&#xff1a; #include<bits/stdc.h> #define deb…

模板:Miller-RabinPollard-Rho(数论)

所谓 pollard-rho&#xff0c;就是泼辣的肉 &#xff08;逃&#xff09; 前言 许多题解都把这两个算法放在了一起。 那我也这样办吧&#xff01; miller-rabin可以在优秀的时间复杂度内完成对一个数的素性检测。 而pollard-rho则是立足于Miler-rabin之上&#xff0c;可以在 …

Asp.NetCore轻松学-部署到 Linux 进行托管

前言上一篇文章介绍了如何将开发好的 Asp.Net Core 应用程序部署到 IIS&#xff0c;且学习了进程内托管和进程外托管的区别&#xff1b;接下来就要说说应用 Asp.Net Core 的特性&#xff08;跨平台&#xff09;&#xff0c;将 .NetCore 部署到 Linux 中&#xff0c;主流的 Linu…

DevC++ 用C语言的多线程 实现简单的客户端和服务器

知识来源一&#xff1a; 使用Dev-C实现简单的客户端和服务器-CSDN博客 此先生的博客使用的是win32 SDK来创建多线程&#xff0c;然后鄙人对这个版本的多线程细节不明。于是又重新用C语言的线程替代win32API,以此继续学习服务器代码。 知识来源二&#xff1a;DevC 多线程创建…

[2021-09-09 T3] 序列/luogu P3943 星空(异或差分+bfs最短路+状压dp)

序列descriptionsolutioncodedescription 题目描述 长度为nnn的序列&#xff0c;初始全为000&#xff0c;每次可以选择⼀个数ai(1≤i≤l)a_i(1\le i\le l)ai​(1≤i≤l)&#xff0c;然后选择连续aia_iai​个元素异或上111 求最少的次数&#xff0c;使得对于所有i(1≤i≤k)i(…

HDU - 4608 I-number

题意&#xff1a; 给你一个x&#xff0c;让你构造一个y&#xff0c;y的要求&#xff1a; y>xy的各项之和为10的倍数在满足前两个的前提下&#xff0c;y尽可能小 题解&#xff1a; 模拟&#xff0c;尽可能的模拟&#xff0c;用字符串模拟 先将各位相加得到sum&#xff0c…

从初创公司的角度来看微服务

在开展微服务的过程中&#xff0c;了解要考虑哪些因素可能是非常有挑战性的事情。没有可以直接使用的金科玉律。每个过程都是不同的&#xff0c;因为每个组织面临的都是不同的环境。在本文中&#xff0c;我将从初创公司的角度分享我们学习到的经验和面临的挑战&#xff0c;以及…