s(n,m)=s(n−1,m−1)+s(n−1,m)∗(n−1)
s
(
n
,
m
)
=
s
(
n
−
1
,
m
−
1
)
+
s
(
n
−
1
,
m
)
∗
(
n
−
1
)
s(n,m)=∑i=1ns(n−i,m−1)(n−1i−1)(i−1)!
s
(
n
,
m
)
=
∑
i
=
1
n
s
(
n
−
i
,
m
−
1
)
(
n
−
1
i
−
1
)
(
i
−
1
)
!
xn¯¯¯=x(x+1)(x+2)...(x+n−1)=∑i=0ns(n,i)xi
x
n
¯
=
x
(
x
+
1
)
(
x
+
2
)
.
.
.
(
x
+
n
−
1
)
=
∑
i
=
0
n
s
(
n
,
i
)
x
i
怎么求呢?用 xn¯¯¯
x
n
¯
直接展开 xn¯¯¯
x
n
¯
,分治 FFT
F
F
T
可以 O(nlog2n)
O
(
n
log
2
n
)
更好的方法是倍增求 xn¯¯¯
x
n
¯
:
x2n¯¯¯¯¯¯=xn¯¯¯(x+n)n¯¯¯
x
2
n
¯
=
x
n
¯
(
x
+
n
)
n
¯
设
F(x,n)=xn¯¯¯
F
(
x
,
n
)
=
x
n
¯
,
G(x,n)=(x+n)n¯¯¯
G
(
x
,
n
)
=
(
x
+
n
)
n
¯
G(x,n)=∑j=in(ji)F(x,n)nj−i
G
(
x
,
n
)
=
∑
j
=
i
n
(
j
i
)
F
(
x
,
n
)
n
j
−
i
这样是卷积形式,就能从
xn¯¯¯
x
n
¯
得到
(x+n)n¯¯¯
(
x
+
n
)
n
¯
,
O(nlogn)
O
(
n
log
n
)
时间内求出一行
Stirling
S
t
i
r
l
i
n
g
数 。
第二类斯特林数
S(n,m)
S
(
n
,
m
)
表示 n
n
个元素分成 m 个集合的方案数。
有
S(n,m)=S(n,m−1)+S(n−1,m)∗m
S
(
n
,
m
)
=
S
(
n
,
m
−
1
)
+
S
(
n
−
1
,
m
)
∗
m
S(n,m)=1m!∑k=0m(−1)k(mk)(m−k)n
S
(
n
,
m
)
=
1
m
!
∑
k
=
0
m
(
−
1
)
k
(
m
k
)
(
m
−
k
)
n
根据组合意义可以得到
kn=∑i=0kAikS(n,i)=∑i=0ki!(ki)S(n,i)
k
n
=
∑
i
=
0
k
A
k
i
S
(
n
,
i
)
=
∑
i
=
0
k
i
!
(
k
i
)
S
(
n
,
i
)
这里要用个东西叫二项式反演,大概是个容斥:
f(n)=∑i=0n(ni)g(i)⇒g(n)=∑i=0n(−1)n−i(ni)f(i)
f
(
n
)
=
∑
i
=
0
n
(
n
i
)
g
(
i
)
⇒
g
(
n
)
=
∑
i
=
0
n
(
−
1
)
n
−
i
(
n
i
)
f
(
i
)
用二项式反演得到
S(n,k)=1k!∑i=0k(−1)k−i(ki)i!=∑i=0k(−1)k−iini!(k−i)!
S
(
n
,
k
)
=
1
k
!
∑
i
=
0
k
(
−
1
)
k
−
i
(
k
i
)
i
!
=
∑
i
=
0
k
(
−
1
)
k
−
i
i
n
i
!
(
k
−
i
)
!
然后一次FFT就好了。
注意 kn=∑ki=0AikS(n,i)
k
n
=
∑
i
=
0
k
A
k
i
S
(
n
,
i
)
这个等式在推式子,算贡献时很有用,可以代换。