数论的小总结

有什么呢…其实我也不知道什么算是数论都丢上来好了
我决定把目录删掉…这样不会太早暴露智商…
[update.它居然自动帮我加了个目录

拓展欧几里德算法


实现方式

对不完全为0的非负整数 a a a b b b g c d ( a , b ) gcd(a,b) gcd(a,b)必有整数对 ( x , y ) (x,y) (x,y)使 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)成立。

  • 显然,当 b = 0 b=0 b=0时, g c d ( a , b ) = a gcd(a,b)=a gcd(a,b)=a。此时有 x = 1 , y = 0 x=1,y=0 x=1,y=0.
  • 据欧几里德原理有 g c d ( a , b ) = g c d ( b , a    m o d    b ) gcd(a,b)=gcd(b,a\;mod\;b) gcd(a,b)=gcd(b,amodb)
    又有
    KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \̲n̲e̲w̲l̲i̲n̲e̲
    a x + b y = b x ′ + ( a    m o d    b ) y ′ ax+by=bx'+(a\;mod\;b)y' ax+by=bx+(amodb)y
           = b x ′ + ( a − ⌊ a b ⌋ b ) y ′ \qquad\quad\;\;\;=bx'+(a-\lfloor\frac ab\rfloor b)y' =bx+(abab)y
           = a y ′ + b ( x ′ − ⌊ a b ⌋ y ′ ) \qquad\quad\;\;\;=ay'+b(x'-\lfloor\frac ab\rfloor y') =ay+b(xbay)
    KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \̲n̲e̲w̲l̲i̲n̲e̲

于是就可以递归求解了
代码如下:

void exgcd(int a,int b,int &d,int &x,int &y)
{
	if (b==0)
	{
		x=1,y=0;d=a;
		return;
	}
	exgcd(b,a%b,d,x,y);
	int t=x;x=y,y=t-a/b*y;
}
应用

一、解不定方程
求解形如 A x + B y = c Ax+By=c Ax+By=c的不定方程
首先,若 C C C能被 g c d ( a , b ) gcd(a,b) gcd(a,b)整除,则方程存在整数解,否则不存在。
证明:
∵必有一组 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)满足 A x 0 + B y 0 = g c d ( A , B ) Ax_0+By_0=gcd(A,B) Ax0+By0=gcd(A,B)
令式子两端同乘 C g c d ( A , B ) \frac{C}{gcd(A,B)} gcd(A,B)C即可得一组满足的解 ( x 0 C g c d ( A , B ) , y 0 C g c d ( A , B ) ) (x_0\frac{C}{gcd(A,B)},y_0\frac{C}{gcd(A,B)}) (x0gcd(A,B)C,y0gcd(A,B)C)
∴设 x 1 = x 0 C g c d ( A , B ) x_1=x_0\frac{C}{gcd(A,B)} x1=x0gcd(A,B)C y 1 = y 0 C g c d ( A , B ) y_1=y_0\frac{C}{gcd(A,B)} y1=y0gcd(A,B)C,有 A x 1 + B y 1 = C Ax_1+By_1=C Ax1+By1=C
而得整数解的前提就是 C C C能被 g c d ( a , b ) gcd(a,b) gcd(a,b)整除啊。

A x + B y = C Ax+By=C Ax+By=C的其他整数解满足: A ( x 1 + B g c d ( A , B ) × t ) + B ( y 1 − A g c d ( A , B ) × t ) = C , t ∈ Z A(x_1+\frac{B}{gcd(A,B)}\times t)+B(y_1-\frac{A}{gcd(A,B)}\times t)=C,t\in Z A(x1+gcd(A,B)B×t)+B(y1gcd(A,B)A×t)=C,tZ
于是即可由一组解 ( x 1 , y 1 ) (x_1,y_1) (x1,y1)得到该方程组的所有整数解
p = B g c d ( A , B ) p=\frac{B}{gcd(A,B)} p=gcd(A,B)B,该方程的最小整数解为 x = ( x 1 m o d    p + p ) m o d    p . x=(x_1mod\;p+p)mod\;p. x=(x1modp+p)modp.

二、解模线性方程组
同余方程 a x ≡ b ( m o d    n ) ax\equiv b(mod\;n) axb(modn)对未知数 x x x有解当且仅当 g c d ( a , n ) ∣ b gcd(a,n)\mid b gcd(a,n)b且有解时有 g c d ( a , n ) gcd(a,n) gcd(a,n)个解。即若 g c d ( a , n ) = 1 gcd(a,n)=1 gcd(a,n)=1是方程有唯一解。
a x ≡ b ( m o d    n ) ⇒ a x + n y = b ax\equiv b(mod\;n)\Rightarrow ax+ny=b axb(modn)ax+ny=b
然后就转成应用1了

三、求模下的逆元
a a a在模 n n n下的逆元,保证 g c d ( a , n ) = 1 gcd(a,n)=1 gcd(a,n)=1,即求 a x ≡ 1 ( m o d    n ) ax\equiv 1(mod\;n) ax1(modn)中的 x x x
然后就转成应用2了[:那你为什么要单独列[掀桌

题目

bzoj1407 Savage
$\$

逆元


口胡定义

a a a m o d    p mod\;p modp下的逆元即使该式 a × b = 1 ( m o d    p ) a\times b=1(mod\;p) a×b=1(modp)成立的 b b b
通常写成 a − 1 a^{-1} a1

求法
  1. 据费马小定理:
    假如 p p p是质数,且 g c d ( a , p ) = 1 gcd(a,p)=1 gcd(a,p)=1 a a a p p p互质,那么有 a p − 1 ≡ 1 ( m o d    p ) a^{p-1}\equiv 1(mod\;p) ap11(modp)
    a × a p − 2 ≡ 1 ( m o d    p ) a\times a^{p-2}\equiv 1(mod\;p) a×ap21(modp)
    所以 a a a m o d    p mod\;p modp下的逆元为 a p − 2 a^{p-2} ap2,这个可以快速幂求得。
    注意条件哦。
  2. 应用拓展欧几里德求解方程(展开就懒得打了)
  3. ⋆ \star 线性求逆元
    前提: p p p为质数
    a − 1 = ( p − ⌊ p a ⌋ ) × ( p    m o d    a ) − 1    m o d    p a^{-1}=(p-\lfloor\frac pa\rfloor)\times (p\;mod\;a)^{-1}\;mod\;p a1=(pap)×(pmoda)1modp
    证明:
    k = ⌊ p a ⌋ , r = p    m o d    a k=\lfloor\frac{p}{a}\rfloor,r=p\;mod\;a k=ap,r=pmoda,有 p = k a + r p=ka+r p=ka+r
         k a + r ≡ 0    ( m o d    p ) \;\;ka+r\equiv0\;(mod\;p) ka+r0(modp)
         ( k a + r ) a − 1 ⋅ r − 1 ≡ 0    ( m o d    p ) \;\;(ka+r)a^{-1}·r^{-1}\equiv0\;(mod\;p) (ka+r)a1r10(modp)
    ( k + a − 1 ⋅ r ) r − 1 ≡ 0    ( m o d    p ) (k+a^{-1}·r)r^{-1}\equiv0\;(mod\;p) (k+a1r)r10(modp)
    k r − 1 + a − 1 ≡ 0    ( m o d    p ) kr^{-1}+a^{-1}\equiv0\;(mod\;p) kr1+a10(modp)
    ∴(拆开) a − 1 = − ⌊ p a ⌋ ⋅ ( p    m o d    a ) − 1    ( m o d    p ) a^{-1}=-\lfloor\frac{p}{a}\rfloor·(p\;mod\;a)^{-1}\;(mod\;p) a1=ap(pmoda)1(modp)
    a − 1 = ( p − ⌊ p a ⌋ ) × ( p    m o d    a ) − 1    m o d    p a^{-1}=(p-\lfloor\frac pa\rfloor)\times (p\;mod\;a)^{-1}\;mod\;p a1=(pap)×(pmoda)1modp
ny[1]=1;for (i=2;i<=lim;i++) ny[i]=(LL)(p-(p/i))%p*(LL)ny[p%i]%p;
题目

bzoj2186[SDOI2008]萨拉公主的困(you)惑

$\$

中国剩余定理


$\$

原根


引入一个东西,
定义,设 a a a n n n是互质的整数, a ≠ n a≠n a=n n > 0 n>0 n0.使得 a x ≡ 1 ( m o d    n ) a^x\equiv1(\mod n) ax1(modn)成立的最小正整数 x x x称为 a a a n n n的阶,并即为 o r d n a ord_na ordna.
据欧拉定理,若 g c d ( a , n ) = 1 , n ∈ Z + gcd(a,n)=1,n\in Z^+ gcd(a,n)=1,nZ+,有 a ϕ ( n ) ≡ 1 ( m o d    n ) a^{\phi(n)}\equiv1(\mod n) aϕ(n)1(modn)
那么就会有 o r d n a ∣ ϕ ( n ) ord_na\mid\phi(n) ordnaϕ(n)

口胡定义

一个正整数 x x x,若其所有幂次遍历模 n n n的所有整数,那么它就是模 n n n的一个原根。
定义,如果 r r r n n n是互质的整数且 n > 0 n>0 n0,那么当 o r d n r = ϕ ( n ) ord_nr=\phi(n) ordnr=ϕ(n)时,称 r r r n n n的原根或者n的原根,并且我们称 n n n有一原根。

性质(?反正是一些相关的定理或者推论吧)
  1. g g g是模 n n n的一个原根, g g g n n n互质且 n > 0 n>0 n0,那么 g 1 , g 2 , … , g ϕ ( n ) g^1,g^2,\dots,g^{\phi(n)} g1,g2,,gϕ(n)构成模 n n n的既约剩余系。即有 g i m o d    n g^i\mod n gimodn 1 ≤ i ≤ ϕ ( n ) 1≤i≤\phi(n) 1iϕ(n)的结果互不相同。

既约剩余系[来自度娘
在模n的值与n互质的全部剩余类中,从每一类中各任取一数所组成的数的集合,叫做模n的一个简化剩余系,也叫缩系。也可以理解为,在每个剩余类选取至1个与m互素代表元构成简化剩余系。
模n的简化剩余系中元素的个数为φ(n)(既欧拉函数)

  1. r r r n n n的原根, n > 1 n>1 n1 n ∈ Z n\in Z nZ,那么 r u r^u ru n n n的一个原根当且仅当 ( u , ϕ ( n ) ) = 1 (u,\phi(n))=1 (u,ϕ(n))=1.
    于是得到如下定理,如果正整数 n n n有一个原根,那么他一共有 ϕ ( ϕ ( n ) ) \phi(\phi(n)) ϕ(ϕ(n))个不同余的原根
存在性

并非所有整数都有原根,例如没有模8的原根。
一个正整数有原根当且仅当它为2,4, p t p^t pt 2 p t 2p^t 2pt,其中 p p p为奇素数且 t t t的正整数。
证明就不打了。。好长啊。。整整一节。。

求解方法

通常最小的原根都比较小,所以最直接的方法:暴力枚举
假设枚举到 g g g问是否为 n n n的原根,即判断 ϕ ( n ) \phi(n) ϕ(n)是否为 g g g n n n的阶。枚举 ϕ ( n ) \phi(n) ϕ(n)的约数 p p p,若有 g p ≡ 1 ( m o d    n ) g^p\equiv1(\mod n) gp1(modn),那么 g g g就不是 n n n的原根。因为与 g i g^i gi不同余矛盾,冲突。
但是这样会做了很多重复的东西。
其实只要枚举 ϕ ( n ) \phi(n) ϕ(n)的质因数 p i p_i pi,只需要检验 g ϕ ( n ) / p 1 , g ϕ ( n ) / p 2 , . . . , g ϕ ( n ) / p m g^{\phi(n)/p_1},g^{\phi(n)/p_2},...,g^{\phi(n)/p_m} gϕ(n)/p1,gϕ(n)/p2,...,gϕ(n)/pm这m个数中,是否存在一个数mod n n n为1,存在就不是,就好了。

模板题目

51Nod1135原根问题
$\$

积性函数


口胡定义

若函数 f ( x ) f(x) f(x)是积性函数,则有:对互质的两个数 a , b a,b a,b,有 f ( a b ) = f ( a ) ⋅ f ( b ) f(ab)=f(a)·f(b) f(ab)=f(a)f(b)
而完全积性函数是对任意 a , b a,b a,b都有 f ( a b ) = f ( a ) ⋅ f ( b ) f(ab)=f(a)·f(b) f(ab)=f(a)f(b)

先说下这个:
狄利克雷卷积( D i r i c h l e t Dirichlet Dirichlet卷积)
对两个算术函数 f f f g g g,定义其狄利克雷卷积为新函数:
( f ∗ g ) ( n ) = ∑ d ∣ n f ( d ) ⋅ g ( n d ) (f*g)(n)=\sum_{d|n}f(d)·g(\frac{n}{d}) (fg)(n)=dnf(d)g(dn)
*把定义在正整数集的函数称为算术函数
其实就相当于定义新运算(?),将 f f f g g g,表达为 f ∗ g f*g fg
性质:
交换律: f ∗ h = g ∗ f f*h=g*f fh=gf
结合律: ( f ∗ g ) ∗ h = f ∗ ( g ∗ h ) (f*g)*h=f*(g*h) (fg)h=f(gh)
单位元: f ∗ ϵ = f f*\epsilon=f fϵ=f
对逐点加法的分配律: f ∗ ( g + h ) = f ∗ g + f ∗ h f*(g+h)=f*g+f*h f(g+h)=fg+fh

性质
  1. n = p 1 a 1 p 2 a 2 … p k a k n=p_1^{a_1}p_2^{a_2}\dots p_k^{a_k} n=p1a1p2a2pkak( p p p为质数),有 f ( n ) = f ( p 1 a 1 ) f ( p 2 a 2 ) … f ( p k a k ) f(n)=f(p_1^{a_1})f(p_2^{a_2})\dots f(p_k^{a_k}) f(n)=f(p1a1)f(p2a2)f(pkak)
  2. f f f为积性函数且有 f ( p n ) = f n ( p ) f(p^n)=f^n(p) f(pn)=fn(p),那么 f f f为完全积性函数。
  3. f f f g g g为积性函数,那么 f ∗ g f*g fg也为积性函数(就是指狄利克雷卷积)。
  4. 积性函数的前缀和也是积性函数。
  5. 对于 f ( n ) = ∑ d ∣ n g ( d ) f(n)=\sum_{d|n}g(d) f(n)=dng(d),只要有一者积性,两者都积性。
常见的积性函数(必记)
  • I d ( n ) Id(n) Id(n)——单位函数,也有作 u ( n ) u(n) u(n)。定义 I d ( n ) = n Id(n)=n Id(n)=n
  • I d k ( n ) Id_k(n) Idk(n)——单位幂函数,定义 I d k ( n ) = n k Id_k(n)=n^k Idk(n)=nk
  • ⋆ φ ( n ) \star\varphi(n) φ(n)——欧拉函数
  • ⋆ μ ( n ) \star\mu(n) μ(n)——莫比乌斯函数
  • ϵ ( n ) \epsilon(n) ϵ(n)——当且仅当 n = 1 n=1 n=1时, ϵ ( n ) = 1 \epsilon(n)=1 ϵ(n)=1;否则 ϵ ( n ) = 0 \epsilon(n)=0 ϵ(n)=0
  • d ( n ) d(n) d(n)—— n n n的约数个数
  • σ ( n ) \sigma(n) σ(n)—— n n n的约数之和
常用的公式
  • ⋆ 1 ∗ μ = ϵ \star1*\mu=\epsilon 1μ=ϵ 1 1 1是恒等函数恒等于1.
  • ⋆ 1 ∗ φ = I d \star1*\varphi=Id 1φ=Id
  • ( I d ∗ φ ) ∗ I d = I d 2 (Id*\varphi)*Id=Id^2 (Idφ)Id=Id2
重点的展开

一、欧拉函数
φ ( n ) \varphi(n) φ(n)为小于等于 n n n的正整数中与 n n n互质的个数
通式 φ ( n ) = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) … ( 1 − 1 p k ) \varphi(n)=n(1-\frac1{p_1})(1-\frac1{p_2})\dots(1-\frac1{p_k}) φ(n)=n(1p11)(1p21)(1pk1)
其中 p 1 , p 2 , … , p k p_1,p_2,\dots,p_k p1,p2,,pk n n n的所有质因数, n ∈ N ∗ n\in N^{*} nN

若有质数 P P P,有 φ ( p k ) = ( p − 1 ) p k − 1 \varphi(p^k)=(p-1)p^{k-1} φ(pk)=(p1)pk1
φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ(pk)=pkpk1得到。因为除了 p p p的倍数其他都与 p k p^k pk互质。

  1. 欧拉定理
    n n n a a a皆为正整数,且 n n n a a a互质,则 a φ ( n ) ≡ 1 (    m o d    n ) a^{\varphi(n)}\equiv 1(\;mod\;n) aφ(n)1(modn)
    可推出:当 x ≡ y (    m o d    φ ( n ) ) x\equiv y(\;mod\;\varphi(n)) xy(modφ(n))时且 a a a n n n互质时, a x ≡ a y (    m o d    n ) a^x\equiv a^y(\;mod\;n) axay(modn)
  2. a x ≡ a x    m o d    φ ( n ) + φ ( n ) (    m o d    n ) a^x\equiv a^{x\;mod\;\varphi(n)+\varphi(n)}(\;mod\;n) axaxmodφ(n)+φ(n)(modn) x ≥ φ ( n ) x≥\varphi(n) xφ(n)。[不要求 a a a, n n n互质]

1 ∗ φ = I d 1*\varphi=Id 1φ=Id的证明:
1 ∗ φ = ∑ d ∣ n μ ( d ) ⋅ 1 ( n d ) = ∑ d ∣ n φ ( d ) 1*\varphi=\sum_{d|n}\mu(d)·1(\frac{n}{d})=\sum_{d|n}\varphi(d) 1φ=dnμ(d)1(dn)=dnφ(d)
对以 n n n为分母的所有真分数: 0 n \frac0n n0, 1 n \frac1n n1, 2 n \frac2n n2 … \dots , n − 1 n \frac{n-1}n nn1进行约分。那么对于一个分母 d d d d ∣ n d|n dn,且以 d d d为分母的份数个数恰为 φ ( d ) \varphi(d) φ(d)个。
所以有 ∑ d ∣ n φ ( d ) = n \sum_{d|n}\varphi(d)=n dnφ(d)=n
1 ∗ φ = I d 1*\varphi=Id 1φ=Id

二、莫比乌斯函数
KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \̲n̲e̲w̲l̲i̲n̲e̲
性质

  1. KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \̲n̲e̲w̲l̲i̲n̲e̲
  2. ∑ d ∣ n μ ( d ) d = φ ( n ) n \sum_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}n dndμ(d)=nφ(n)

$\$
1 ∗ μ = ϵ 1*\mu=\epsilon 1μ=ϵ的证明:
1 ∗ μ = ∑ d ∣ n μ ( d ) ∗ 1 ( n d ) = ∑ d ∣ n μ ( d ) 1*\mu=\sum_{d|n}\mu(d)*1(\frac{n}{d})=\sum_{d|n}\mu(d) 1μ=dnμ(d)1(dn)=dnμ(d)
n n n k k k个不同的质因子,则公式等价与 ∑ x = 0 k C k x ∗ ( − 1 ) x \sum_{x=0}^{k}C_k^x*(-1)^x x=0kCkx(1)x.
μ ( n ) \mu(n) μ(n)的定义意会一下(…),通过容斥来考虑,可知(- -)当 k ≠ 0 k\neq0 k=0时,使该值为0.
n ≠ 1 n\neq1 n=1时, 1 ∗ μ = 0 1*\mu=0 1μ=0
所以 1 ∗ μ = ϵ 1*\mu=\epsilon 1μ=ϵ

$\$

线性筛


就是一种筛法,时间复杂度是 O ( n ) O(n) O(n)。因为每个数只会被筛到一次,被其最小质因子筛到。
线性筛也通常作为一种工具(?)来在线性的时间内求出一个函数的值。
对于一个想要被线筛搞出来的函数 f f f,要考虑三种情况:
1、 x x x是质数时, f ( x ) f(x) f(x)的取值
2、 x ∣ i x\mid i xi时, f ( x i ) f(xi) f(xi) f ( x ) f(x) f(x) f ( i ) f(i) f(i)的关系
3、 x ∤ i x\nmid i xi时, f ( x i ) f(xi) f(xi) f ( x ) f(x) f(x) f ( i ) f(i) f(i)的关系
如果都能找得到就可以用线性筛来求辣,不一定非要是积性函数。
要注意给 f [ 1 ] f[1] f[1]赋值
下面含有 μ \mu μ φ \varphi φ的线筛打法,代码:

void pre()
{
	cnt=0;mu[1]=1;phi[1]=1;
	for (LL i=2;i<=lim;i++)
	{
		if (!ispri[i]) {pri[++cnt]=i;mu[i]=-1;phi[i]=i-1;}
		for (LL j=1;j<=cnt && i*pri[j]<=lim;j++)
		{
			ispri[i*pri[j]]=true;
			if (i%pri[j]==0)
			{
				mu[i*pri[j]]=0;
				phi[i*pri[j]]=phi[i]*pri[j];
				break;
			}
			mu[i*pri[j]]=-mu[i];
			phi[i*pri[j]]=(pri[j]-1)*phi[i];
		}
	}
	//for (LL i=2;i<=lim;i++) phi[i]+=phi[i-1],mu[i]+=mu[i-1];
}
题目(有关积性函数跟线性筛的)

bzoj2705[SDOI2012] Longge的问题
bzoj2440 [中山市选2011]完全平方数
bzoj2005 [Noi2010]能量采集
bzoj2226[Spoj 5971] LCMSum
bzoj2818 Gcd
bzoj3529 数表
bzoj2749 [HAOI2012]外星人
$\$

⋆ \star 莫比乌斯反演


f f f为积性函数,且 g ( n ) = ∑ d ∣ n f ( d ) g(n)=\sum_{d|n}f(d) g(n)=dnf(d),那么 g g g也是积性函数。
且有
f ( n ) = ∑ d ∣ n μ ( d ) ⋅ g ( n d ) f(n)=\sum_{d|n}\mu(d)·g(\frac nd) f(n)=dnμ(d)g(dn)
证明:
g ( n ) = ∑ d ∣ n f ( d ) g(n)=\sum_{d|n}f(d) g(n)=dnf(d),即 g = f ∗ 1 g=f*1 g=f1
又有 1 ∗ μ = ϵ 1*\mu=\epsilon 1μ=ϵ
f = g ∗ μ f=g*\mu f=gμ
f ( n ) = ∑ d ∣ n μ ( d ) ⋅ g ( n d ) f(n)=\sum_{d|n}\mu(d)·g(\frac nd) f(n)=dnμ(d)g(dn)

题目

bzoj2301 [HAOI2011]Problem b
bzoj2154 Crash的数字表格
bzoj2818 Gcd (两种做法)
bzoj2693 jzptab
bzoj3309 DZY Loves Math
bzoj3994 [SDOI2015]约数个数和
bzoj4407 于神之怒加强版

$\$

杜教筛


这是个低于线性时间的复杂度下解决一类积性函数的前缀和的筛法(?)。
嗯…我只学会了搞 φ \varphi φ μ \mu μ的前缀和…
假装会了…

φ ( d ) \varphi(d) φ(d)的前缀和

定义 ϕ ( n ) = ∑ i = 1 n φ ( i ) \phi(n)=\sum_{i=1}^{n}\varphi(i) ϕ(n)=i=1nφ(i),即欧拉函数的前缀和。
据公式 1 ∗ φ = u 1*\varphi=u 1φ=u,即 ∑ d ∣ n φ ( d ) = n \sum_{d|n}\varphi(d)=n dnφ(d)=n
移项一下就变成了 φ ( n ) = n − ∑ d ∣ n , d < n φ ( d ) \varphi(n)=n-\sum_{d|n,d<n}\varphi(d) φ(n)=ndn,d<nφ(d)

如果是直接理解为什么 ∑ d ∣ n , d < n φ ( d ) \sum_{d|n,d<n}\varphi(d) dn,d<nφ(d)表示小于等于 n n n且不与 n n n互质的数的个数的话
那么就将它写成 ∑ d ∣ n , d < n φ ( n d ) \sum_{d|n,d<n}\varphi(\frac nd) dn,d<nφ(dn).
把小于等于 n d \frac nd dn且与 n d \frac nd dn互质的减掉即把与 n n n g c d gcd gcd d d d的数减掉
d d d n n n是约数
所以 ∑ d ∣ n , d < n φ ( d ) \sum_{d|n,d<n}\varphi(d) dn,d<nφ(d)就表示小于等于 n n n且不与 n n n互质的数了啊

于是 ϕ ( n ) = ∑ i = 1 n ( i − ∑ d ∣ i , d < i φ ( d ) ) \phi(n)=\sum_{i=1}^{n}(i-\sum_{d|i,d<i}\varphi(d)) ϕ(n)=i=1n(idi,d<iφ(d))
i i i提出来就是 n ( n + 1 ) 2 − ∑ i = 1 n ∑ d ∣ i , d < i φ ( d ) \frac{n(n+1)}{2}-\sum_{i=1}^{n}\sum_{d|i,d<i}\varphi(d) 2n(n+1)i=1ndi,d<iφ(d)
n ( n + 1 ) 2 − ∑ i d = 2 n ∑ d = 1 ⌊ n i d ⌋ φ ( d ) \frac{n(n+1)}{2}-\sum_{\frac{i}{d}=2}^{n}\sum_{d=1}^{\lfloor\frac{n}{{\frac{i}{d}}}\rfloor}\varphi(d) 2n(n+1)di=2nd=1dinφ(d)
换一下元, i d − > i \frac{i}{d}->i di>i
n ( n + 1 ) 2 − ∑ i = 2 n ∑ d = 1 ⌊ n i ⌋ φ ( d ) \frac{n(n+1)}{2}-\sum_{i=2}^{n}\sum_{d=1}^{\lfloor\frac{n}{i}\rfloor}\varphi(d) 2n(n+1)i=2nd=1inφ(d)
于是后面那块也变成了前缀和
n ( n + 1 ) 2 − ∑ i = 2 n ϕ ( ⌊ n i ⌋ ) \frac{n(n+1)}{2}-\sum_{i=2}^{n}\phi(\lfloor\frac{n}{i}\rfloor) 2n(n+1)i=2nϕ(in)
综上,即有 ϕ ( n ) = n ( n + 1 ) 2 − ∑ i = 2 n ϕ ( ⌊ n i ⌋ ) \phi(n)=\frac{n(n+1)}{2}-\sum_{i=2}^{n}\phi(\lfloor\frac{n}{i}\rfloor) ϕ(n)=2n(n+1)i=2nϕ(in)

μ ( d ) \mu(d) μ(d)的前缀和

定义 M ( n ) = ∑ i = 1 n μ ( i ) M(n)=\sum_{i=1}^{n}\mu(i) M(n)=i=1nμ(i)
同样的从公式入手,有 1 ∗ μ = ϵ 1*\mu=\epsilon 1μ=ϵ,即 ∑ d ∣ n 1 × μ ( d ) = [ n = 1 ] \sum_{d|n}1\times \mu(d)=[n=1] dn1×μ(d)=[n=1]
反演一下,即 1 = ∑ i = 1 n [ i = 1 ] = ∑ i = 1 n ∑ d ∣ i μ ( d ) 1=\sum_{i=1}^{n}[i=1]=\sum_{i=1}^{n}\sum_{d|i}\mu(d) 1=i=1n[i=1]=i=1ndiμ(d)
这个实即 ∑ d = 1 n ⌊ n d ⌋ × μ ( d ) \sum_{d=1}^{n}\lfloor\frac{n}{d}\rfloor\times\mu(d) d=1ndn×μ(d)
i ∈ [ 1 , ⌊ n d ⌋ ] i∈[1,\lfloor\frac{n}{d}\rfloor] i[1,dn]
所以就有 ∑ d = 1 n ∑ i = 1 ⌊ n d ⌋ μ ( d ) \sum_{d=1}^{n}\sum_{i=1}^{\lfloor{\frac{n}{d}\rfloor}}\mu(d) d=1ni=1dnμ(d)
i i i d d d换一下,即有
1 = ∑ d = 1 n ∑ i = 1 ⌊ n d ⌋ μ ( d ) 1=\sum_{d=1}^{n}\sum_{i=1}^{\lfloor{\frac{n}{d}\rfloor}}\mu(d) 1=d=1ni=1dnμ(d)
后面那个就是莫比乌斯的前缀和,改成 M ( ⌊ n d ⌋ ) M(\lfloor\frac{n}{d}\rfloor) M(dn)
M ( n ) = ∑ i = 1 n M ( ⌊ n i ⌋ ) − ∑ i = 2 n M ( ⌊ n i ⌋ ) M(n)=\sum_{i=1}^{n}M(\lfloor\frac{n}{i}\rfloor)-\sum_{i=2}^{n}M(\lfloor\frac{n}{i}\rfloor) M(n)=i=1nM(in)i=2nM(in)
所以有 M ( n ) = 1 − ∑ i = 2 n M ( ⌊ n i ⌋ ) M(n)=1-\sum_{i=2}^{n}M(\lfloor\frac{n}{i}\rfloor) M(n)=1i=2nM(in)

题目

51Nod1239
51Nod1244
bzoj3944 Sum
bzoj3512 DZY Loves Math IV
bzoj3930 [CQOI2015]选数

$\$

常用套路 怎么全是套路![掀桌.jpg


常见的解题步骤
  1. 根据题意列出式子
  2. 画柿子,直到画出自己想要的或者说能在时间内求得的
  3. 通常要预处理某个函数的前缀和,考虑暴力 O ( n l o g n ) O(nlogn) O(nlogn)、线性筛 O ( n ) O(n) O(n)、杜教筛 O ( n 2 3 ) O(n^{\frac 23}) O(n32)(听说的…)。。如果都不行。。我也不会了。。
  4. 最后通常都要分块 O ( n ) O(\sqrt{n}) O(n ),利用之前预处理的函数前缀和或求和公式来处理。
等价变化的套路
  1. 枚举最小公约数;
  2. 内外层求和对调,通常是交换枚举倍数和约数;
  3. 有意识得化成 g c d = 1 gcd=1 gcd=1这样的的式子利用莫比乌斯反演;
  4. 有时候想着直接反演之前考虑一下欧拉函数,可能欧拉化的更简单;
  5. 换元,比如 ∑ d = 1 n ∑ t = 1 ⌊ n d ⌋ X X n d t X \sum_{d=1}^{n}\sum_{t=1}^{\lfloor\frac nd\rfloor}XX\frac {n}{dt}X d=1nt=1dnXXdtnX这种时候,通常设 D = d t D=dt D=dt来进行换元;
  6. 要多想想式子的实际意义,可以通常意义来等价变化
  7. 把能提的先提出来
一些公式推导的栗子

1、原式: ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = d ] \sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=d] i=1nj=1m[gcd(i,j)=d]
= ∑ d = 1 m i n ( n , m ) ∑ ⌊ i d ⌋ = 1 n ∑ ⌊ j d ⌋ = 1 m [ g c d ( ⌊ i d ⌋ , ⌊ j d ⌋ ) = 1 ] =\sum_{d=1}^{min(n,m)}\sum_{\lfloor\frac id\rfloor=1}^n\sum_{\lfloor\frac jd\rfloor=1}^m[gcd(\lfloor\frac id\rfloor,\lfloor\frac jd\rfloor)=1] =d=1min(n,m)di=1ndj=1m[gcd(di,dj)=1]
交换枚举约数和倍数: i d → i \frac id\rightarrow i dii j d → j \frac jd\rightarrow j djj
= ∑ d = 1 m i n ( n , m ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ ϵ ( g c d ( i , j ) ) =\sum_{d=1}^{min(n,m)}\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}\epsilon(gcd(i,j)) =d=1min(n,m)i=1dnj=1dmϵ(gcd(i,j))
∵有 1 ∗ μ = ϵ 1*\mu=\epsilon 1μ=ϵ,即 ∑ d ∣ n μ ( d ) = ϵ ( n ) \sum_{d|n}\mu(d)=\epsilon(n) dnμ(d)=ϵ(n)
所以有: = ∑ i = 1 n ∑ j = 1 m ∑ d ∣ ( i , j ) μ ( d ) =\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|(i,j)}\mu(d) =i=1nj=1md(i,j)μ(d)
= ∑ i = 1 n ∑ j = 1 m ∑ d ∣ i , d ∣ j μ ( d ) =\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|i , d|j}\mu(d) =i=1nj=1mdi,djμ(d)
= ∑ d = 1 m i n ( n , m ) μ ( d ) × ⌊ i d ⌋ × ⌊ j d ⌋ =\sum_{d=1}^{min(n,m)}\mu(d)\times \lfloor\frac{i}{d}\rfloor\times\lfloor\frac{j}{d}\rfloor =d=1min(n,m)μ(d)×di×dj

2、原式: ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum_{i=1}^{n}\sum_{j=1}^{m}gcd(i,j) i=1nj=1mgcd(i,j)
= ∑ i = 1 n ∑ j = 1 m ∑ d ∣ ( i , j ) φ ( d ) =\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|(i,j)}\varphi(d) =i=1nj=1md(i,j)φ(d)
= ∑ d = 1 m i n ( n , m ) φ ( d ) × ⌊ n d ⌋ × ⌊ m d ⌋ =\sum_{d=1}^{min(n,m)}\varphi(d)\times \lfloor\frac nd\rfloor\times \lfloor\frac md \rfloor =d=1min(n,m)φ(d)×dn×dm

诶懒得复制了。。去做题吧。。推导在题解里都有。。

感想= =
  1. 感觉套路很深,像是定义几个函数(能预处理的)来套用化简,或者说是把化得的某串东西当成一个函数来求 之类的,这样的我都不会。怎么说,就是碰到了没有一点感觉。
  2. 对什么时候能直接暴力做还是要继续化简没有准确的预估。
  3. 画柿子画到不会画了但是又求不出来的时候…看了一眼题解…woc怎么这么套路
  4. 熟练应用各种性质是很重要的[但是我做不到啊QAQ]

$\$

学习资料


浅谈一类积性函数的前缀和 - skywalkert
积性函数、线性筛、莫比乌斯反演和一堆乱七八糟的题目 - jcvb
莫比乌斯反演个人小结 - femsub
初等数论及其应用(原书第六版) (美)Kenneth H.Rosen 著 夏鸿刚 译
$\$

附言


  • 题目不一定按难易程度排,而且只是bo主自己做了的
  • 写在上面的题目一般都写了题解
  • bo主语文不好脑子也不好使,可能全在口胡
  • bo主从来只有被套路,因为自己不会套路QAQ
  • 为什么看起来写了很多但是都没有什么很厉害的东西QAQ
  • 算了就这样吧,欢迎指错…

$\$
$\$
$\$
在愚人的一天,愚了自己。
#愚人节快乐!


更新辣因为还有好多不会的
——2017.4.12

2017/04/15 更新内容:原根

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值