《高 等 数 学》1

一部分来源于 https://codeforces.com/blog/entry/118001,感谢 Proofy

欧拉函数

定义 φ(x)=i=1x[gcd(i,x)=1]

基础性质:

  1. φ(pk)=(p1)pk1,其中 p 是质数,k1

  2. φ(ab)=φ(a)φ(b)gcd(a,b)=1

应用

欧拉函数的基础应用是求 i=1nj=ingcd(i,j)(虽然这坨东西也有不同的推法,但都要应用到欧拉函数)。

i=1nj=ingcd(i,j)

=k=1nki=1nj=1n[gcd(i,j)=k]

=k=1nki=1nkj=1nk[gcd(i,j)=1]

=k=1nki=1nkφ(i)

然后你暴力就可以做掉 n106(O(nlogn)),加个前缀和就可以做掉 n107(O(n))

注意到推这个的同时我们还推出了 i=1nj=in[gcd(i,j)=k] 的快速解法。

为啥 i=1nni=O(nlogn)

n1+n2+n3++nn

=n(11+12+13++1n)

考虑 11+12+13+,可以放大成 11+212+414+,所以 11+12+13++1n=O(logn)

乘以 n 就是 O(nlogn)

整除分块

Lemma 1:ni 至多有 O(n) 个值。

证明:对于 inni 至多有 n 个值,再加上 i<n,总共 O(n)

Lemma 2:设 l 是最小的 x 满足 nx=cr 是最大的 x 满足 nx=c,则 r=nnl

然后你就可以用这两个 Lemma 去写题了。

exgcd

假设 ax1+by1=gcd(a,b),bx2+(amodb)y2=gcd(b,amodb)

显然有 ax1+by1=bx2+(amodb)y2

变换一下,有 ax1+by1=bx2+(abab)y2

ax1+by1=bx2+ay2baby2

ax1+by1=ay2+b(x2aby2)

得到 x1=y2,y1=x2aby2

然后你就可以用这个玩意求 ax+by=gcd(a,b) 的解了。

posted @   hhc0001  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示