数论相关
欧拉定理及扩展欧拉定理
Lucas定理
当
p
p
p是质数的时候,有
(
m
n
)
≡
(
⌊
m
/
p
⌋
⌊
n
/
p
⌋
)
(
m
m
o
d
p
n
m
o
d
p
)
(
m
o
d
p
)
{m\choose n}≡{{\lfloor m/p\rfloor}\choose{\lfloor n/p\rfloor}}{{m\bmod p}\choose {n\bmod p}}(\bmod p)
(nm)≡(⌊n/p⌋⌊m/p⌋)(nmodpmmodp)(modp)
Kummer定理
设 m , n m,n m,n 为正整数, p p p 为素数,则 ( n + m n ) {n+m\choose n} (nn+m)含 p p p的幂次等于 m + n m+n m+n在 p p p进制下的进位次数
杂项
φ
(
a
b
)
=
φ
(
a
)
φ
(
b
)
(
a
,
b
)
φ
(
(
a
,
b
)
)
\varphi(ab)=\frac{\varphi(a)\varphi(b)(a,b)}{\varphi((a,b))}
φ(ab)=φ((a,b))φ(a)φ(b)(a,b)
∑
i
=
1
n
∑
j
=
1
m
[
(
i
,
j
)
=
1
]
=
∑
i
=
1
n
μ
(
i
)
⌊
n
/
i
⌋
⌊
m
/
i
⌋
\sum_{i=1}^n\sum_{j=1}^m[(i,j)=1]=\sum_{i=1}^n\mu(i)\lfloor n/i\rfloor \lfloor m/i\rfloor
i=1∑nj=1∑m[(i,j)=1]=i=1∑nμ(i)⌊n/i⌋⌊m/i⌋
∑
i
=
1
n
∑
j
=
1
n
[
(
i
,
j
)
=
d
]
=
∑
i
=
1
⌊
n
/
d
⌋
(
2
φ
(
i
)
−
1
)
\sum_{i=1}^n\sum_{j=1}^n[(i,j)=d]=\sum_{i=1}^{\lfloor n/d\rfloor}(2\varphi(i)-1)
i=1∑nj=1∑n[(i,j)=d]=i=1∑⌊n/d⌋(2φ(i)−1)
∑
i
=
1
n
∑
j
=
1
m
[
(
i
,
j
)
=
d
]
=
∑
T
=
1
n
⌊
n
/
T
⌋
⌊
m
/
T
⌋
φ
(
T
)
\sum_{i=1}^n\sum_{j=1}^m[(i,j)=d]=\sum_{T=1}^n\lfloor n/T\rfloor \lfloor m/T\rfloor \varphi(T)
i=1∑nj=1∑m[(i,j)=d]=T=1∑n⌊n/T⌋⌊m/T⌋φ(T)
[
x
=
1
]
=
∑
d
∣
x
μ
(
d
)
[x=1]=\sum_{d|x}\mu(d)
[x=1]=d∣x∑μ(d)
n
=
∑
d
∣
n
φ
(
d
)
n=\sum_{d|n}\varphi(d)
n=d∣n∑φ(d)
组合相关
小trick
i
(
n
i
)
=
n
(
n
−
1
i
−
1
)
i{n\choose i}=n{n-1\choose i-1}
i(in)=n(i−1n−1)
范德蒙恒等式(证明用生成函数秒杀)
∑
i
=
0
(
n
i
)
(
m
k
−
i
)
=
(
n
+
m
k
)
\sum_{i=0}{n\choose i}{m\choose k-i}={n+m\choose k}
i=0∑(in)(k−im)=(kn+m)
上式特殊情况
∑
i
=
0
n
(
n
i
)
2
=
(
2
n
n
)
\sum_{i=0}^n{n\choose i}^2={2n\choose n}
i=0∑n(in)2=(n2n)
组合数列上求和
(
n
m
)
=
∑
i
=
0
n
−
1
(
i
m
−
1
)
{n\choose m}=\sum_{i=0}^{n−1}{i\choose m−1}
(mn)=i=0∑n−1(m−1i)
组合数斜线求和
∑
i
=
0
k
(
n
+
i
i
)
=
(
n
+
k
+
1
k
)
\sum_{i=0}^k{n+i\choose i}={n+k+1\choose k}
i=0∑k(in+i)=(kn+k+1)
∑
i
=
0
n
(
n
−
i
i
)
=
F
i
b
o
n
a
c
c
i
n
\sum_{i=0}^n{n-i\choose i}=Fibonacci_n
i=0∑n(in−i)=Fibonaccin
斯特林数
第一类斯特林数
组合意义:将n个可区分元素划分成m个圆排列的方案数。
递推式:
[
n
m
]
=
[
n
−
1
m
−
1
]
+
(
n
−
1
)
[
n
−
1
m
]
\begin{bmatrix}n \\ m \end{bmatrix}=\begin{bmatrix}n-1 \\ m-1 \end{bmatrix}+(n-1)\begin{bmatrix}n-1 \\ m \end{bmatrix}
[nm]=[n−1m−1]+(n−1)[n−1m]
第二类斯特林数
组合意义:将n个可区分元素划分成m个非空集合的方案数。
递推式:
{
n
m
}
=
{
n
−
1
m
−
1
}
+
m
{
n
−
1
m
}
{n \brace m}={n-1 \brace m-1}+m{n-1 \brace m}
{mn}={m−1n−1}+m{mn−1}
直接展开式:
{
n
m
}
=
1
m
!
∑
k
=
0
m
(
−
1
)
m
−
k
(
m
k
)
k
n
=
∑
k
=
0
m
(
−
1
)
m
−
k
k
n
(
m
−
k
)
!
k
!
{n \brace m}=\frac{1}{m!}\sum_{k=0}^{m}(-1)^{m-k}{m \choose k}k^n=\sum_{k=0}^{m}\frac{(-1)^{m-k}k^n}{(m-k)!k!}
{mn}=m!1k=0∑m(−1)m−k(km)kn=k=0∑m(m−k)!k!(−1)m−kkn
容易发现,乘积是卷积形式,可以用FFT快速求出。
使用两类斯特林数使 幂 与 下降幂 互化
x
n
=
∑
i
=
0
n
{
n
i
}
x
i
‾
x^n=\sum_{i=0}^n {n \brace i} x^{\underline i}
xn=i=0∑n{in}xi
x
n
‾
=
∑
i
=
0
n
(
−
1
)
n
−
i
[
n
i
]
x
i
x^{\underline n}=\sum_{i=0}^n(-1)^{n-i} \begin{bmatrix}n \\ i \end{bmatrix}x^i
xn=i=0∑n(−1)n−i[ni]xi
由这两个式子互相代换可以导出 斯特林反演的原理:
x
n
=
∑
i
=
0
n
{
n
i
}
x
i
‾
x^n=\sum_{i=0}^n {n \brace i} x^{\underline i}
xn=i=0∑n{in}xi
x
n
=
∑
i
=
0
n
{
n
i
}
∑
j
=
0
i
(
−
1
)
i
−
j
[
i
j
]
x
j
x^n=\sum_{i=0}^n {n \brace i} \sum_{j=0}^i(-1)^{i-j} \begin{bmatrix}i \\ j \end{bmatrix}x^j
xn=i=0∑n{in}j=0∑i(−1)i−j[ij]xj
右边调换求和次序
x
n
=
∑
j
=
0
n
x
j
∑
i
=
j
n
(
−
1
)
i
−
j
{
n
i
}
[
i
j
]
x^n=\sum_{j=0}^n x^j\sum_{i=j}^n (-1)^{i-j}{n\brace i}\begin{bmatrix} i \\ j\end{bmatrix}
xn=j=0∑nxji=j∑n(−1)i−j{in}[ij]
由于不论
x
x
x取何值,等式都成立,容易得知
∑
i
=
j
n
(
−
1
)
i
−
j
{
n
i
}
[
i
j
]
=
[
n
=
j
]
\sum_{i=j}^n (-1)^{i-j}{n\brace i}\begin{bmatrix} i \\ j\end{bmatrix}=[n=j]
i=j∑n(−1)i−j{in}[ij]=[n=j]
类似地,我们可以证明另一种代换,所以有
∑
j
=
k
n
(
−
1
)
n
−
k
[
n
j
]
{
j
k
}
=
∑
j
=
k
n
(
−
1
)
j
−
k
{
n
j
}
[
j
k
]
=
[
n
=
k
]
\sum_{j=k}^n (-1)^{n-k} \begin{bmatrix}n \\ j \end{bmatrix} {j\brace k}=\sum_{j=k}^n(-1)^{j-k} {n\brace j}\begin{bmatrix}j \\ k \end{bmatrix}=[n=k]
j=k∑n(−1)n−k[nj]{kj}=j=k∑n(−1)j−k{jn}[jk]=[n=k]
反演
二项式反演
a i = ∑ j = 0 i ( i j ) b j ⇔ b i = ∑ j = 0 i ( − 1 ) i − j ( i j ) a j a_i=\sum\limits_{j=0}^i{i \choose j}b_j⇔b_i=\sum_{j=0}^i(-1)^{i-j}{i \choose j}a_j ai=j=0∑i(ji)bj⇔bi=j=0∑i(−1)i−j(ji)aj
斯特林反演
f m = ∑ i = m n [ i m ] g i ⇔ g m = ∑ i = m n ( − 1 ) i − m { i m } f i f_m=\sum_{i=m}^n \begin{bmatrix} i \\ m\end{bmatrix}g_i⇔g_m=\sum_{i=m}^n(-1)^{i-m}{i \brace m}f_i fm=i=m∑n[im]gi⇔gm=i=m∑n(−1)i−m{mi}fi
a
n
=
∑
i
=
1
n
{
n
i
}
b
i
⇔
b
n
=
∑
i
=
1
n
[
n
i
]
(
−
1
)
n
−
i
a
i
a_n=\sum_{i=1}^n {n\brace i}b_i ⇔ b_n=\sum_{i=1}^n \begin{bmatrix} n \\ i\end{bmatrix}(-1)^{n-i}a_i
an=i=1∑n{in}bi⇔bn=i=1∑n[ni](−1)n−iai
除了上面的两种,斯特林数还有很多类似反演式。
用Samjia神犇提供的推法来证一下第二条:
将
a
,
b
,
{
n
i
}
a,b,{n\brace i}
a,b,{in}都写成EGF的形式。因为
S
k
(
x
)
=
∑
i
≥
0
{
i
k
}
x
i
i
!
=
(
e
x
−
1
)
k
k
!
S_k(x)=\sum_{i\geq 0}\dfrac{{i\brace k}x^i}{i!}=\dfrac{(e^x-1)^k}{k!}
Sk(x)=i≥0∑i!{ki}xi=k!(ex−1)k
所以
A
(
x
)
=
∑
i
≥
1
S
i
(
x
)
b
i
=
∑
i
≥
1
b
i
(
e
x
−
1
)
i
i
!
=
B
(
e
x
−
1
)
A(x)=\sum_{i\geq 1}S_i(x)b_i=\sum_{i\geq 1}\dfrac{b_i(e^x-1)^i}{i!}=B(e^x-1)
A(x)=i≥1∑Si(x)bi=i≥1∑i!bi(ex−1)i=B(ex−1)
A
(
x
)
=
B
(
e
x
−
1
)
⇒
A
(
l
n
(
1
+
x
)
)
=
B
(
x
)
A(x)=B(e^x-1) ⇒ A(ln(1+x))=B(x)
A(x)=B(ex−1)⇒A(ln(1+x))=B(x)
这里已经初露端倪了,
l
n
(
1
+
x
)
=
∑
i
≥
1
(
−
1
)
i
−
1
x
i
i
ln(1+x)=\sum_{i\geq 1}\dfrac{(-1)^{i-1}x^i}{i}
ln(1+x)=∑i≥1i(−1)i−1xi就是一个轮换的EGF
取
[
x
n
]
[x^n]
[xn]看看
b
n
=
∑
i
≥
1
a
i
[
x
n
]
(
l
n
(
1
+
x
)
)
i
i
!
b_n=\sum_{i\geq 1}a_i\dfrac{[x^n](ln(1+x))^{i}}{i!}
bn=i≥1∑aii![xn](ln(1+x))i
第一类斯特林数已经出来了,于是得到
b
n
=
∑
i
=
1
n
a
i
[
n
i
]
(
−
1
)
n
−
i
b_n=\sum_{i=1}^n a_i\begin{bmatrix} n \\ i\end{bmatrix}(-1)^{n-i}
bn=i=1∑nai[ni](−1)n−i
单位根反演
名字听上去很高端,实际上就是初学FFT原理时用到的一个引理:
[
k
∣
i
]
=
1
k
∑
j
=
0
k
−
1
ω
k
j
i
[k|i]=\frac{1}{k}\sum_{j=0}^{k-1}\omega_k^{ji}
[k∣i]=k1j=0∑k−1ωkji
其中
ω
k
\omega_k
ωk是主k次单位根,证明也很简单,此不赘述
例题是HNOI2019白兔之舞