求
∑
n
=
0
∞
f
(
n
)
r
n
\sum_{n=0}^{ \infty }f(n)r^{n}
n=0∑∞f(n)rn
其中
r
∈
(
0
,
1
)
\ r \in (0,1)
r∈(0,1),
f
(
n
)
\ f(n)
f(n)是一个最高次为
k
\ k
k的多项式。
我们先求最简单的形式:
s = ∑ n = 0 ∞ r n s=\sum_{n=0}^{ \infty }r^{n} s=n=0∑∞rn
即
s = 1 + r + r 2 + r 3 + ⋯ s=1+r+r^{2}+r^{3}+\cdots s=1+r+r2+r3+⋯
r ⋅ s = r + r 2 + r 3 + ⋯ r \cdot s=r+r^{2}+r^{3}+\cdots r⋅s=r+r2+r3+⋯
两式相减得
( 1 − r ) ⋅ s = 1 (1-r) \cdot s=1 (1−r)⋅s=1
s = 1 1 − r s= \frac{1}{1-r} s=1−r1
在考虑其他简单形式
s = ∑ n = 0 ∞ n ⋅ r n s=\sum_{n=0}^{ \infty }n \cdot r^{n} s=n=0∑∞n⋅rn
s = r + 2 r 2 + 3 r 3 + 4 r 4 + ⋯ s=r+2r^{2}+3r^{3}+4r^{4}+ \cdots s=r+2r2+3r3+4r4+⋯
r ⋅ s = r 2 + 2 r 3 + 3 r 4 + 4 r 5 + ⋯ r \cdot s=r^{2}+2r^{3}+3r^{4}+4r^{5}+ \cdots r⋅s=r2+2r3+3r4+4r5+⋯
相减得
( 1 − r ) ⋅ s = r + r 2 + r 3 + r 4 + ⋯ (1-r) \cdot s=r+r^{2}+r^{3}+r^{4}+ \cdots (1−r)⋅s=r+r2+r3+r4+⋯
这样和第一种情况一样,答案为
s = r ( 1 − r ) 2 s=\frac{r}{(1-r)^{2}} s=(1−r)2r
这使我们意识到,一个高次多项式的问题可以转换为低次多项式的问题。
为简化算法,我们需要多项式转化为一坨相邻数字连乘。
由于公式(提醒一句,
k
\ k
k是最高次)
f ( n ) = a 0 ( n 1 ) + a 1 ( n 2 ) + ⋯ + a k ( n k )           ( 证 明 ( 1 ) ) f(n) =a_{0}\binom{n}{1}+a_{1}\binom{n}{2}+ \cdots +a_{k}\binom{n}{k}\,\,\,\,\,\,\,\,\,(证明(1)) f(n)=a0(1n)+a1(2n)+⋯+ak(kn)(证明(1))
所以我们就一个组合数考虑
s = ∑ n = 0 ∞ ( n m ) r n s=\sum_{n=0}^{ \infty }\binom{n}{m}r^{n} s=n=0∑∞(mn)rn
( n m ) = n ( n − 1 ) ( n − 2 ) ⋯ ( n − m + 1 ) m ! \binom{n}{m}=\frac{n(n-1)(n-2) \cdots (n-m+1)}{m!} (mn)=m!n(n−1)(n−2)⋯(n−m+1)
提出 m ! \ m! m!得
s = 1 m ! ∑ n = 0 ∞ n ( n − 1 ) ( n − 2 ) ⋯ ( n − m + 1 ) r n s= \frac{1}{m!} \sum_{n=0}^{ \infty }n(n-1)(n-2) \cdots (n-m+1)r^{n} s=m!1n=0∑∞n(n−1)(n−2)⋯(n−m+1)rn
设 s 0 = m ! ⋅ s 设 s0=m! \cdot s 设s0=m!⋅s
n < m 时 , ( n m ) = 0 n<m时,\binom{n}{m}=0 n<m时,(mn)=0
s 0 = 1 × 2 × ⋯ m ⋅ r m + 2 × 3 × ⋯ ( m + 1 ) ⋅ r m + 1 + 3 × 4 × ⋯ ( m + 2 ) r m + 2 + ⋯ s0=1 \times 2 \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots (m+1) \cdot r^{m+1}+3 \times 4 \times \cdots (m+2)r^{m+2}+ \cdots s0=1×2×⋯m⋅rm+2×3×⋯(m+1)⋅rm+1+3×4×⋯(m+2)rm+2+⋯
r ⋅ s 0 = 1 × 2 × ⋯ m ⋅ r m + 1 + 2 × 3 × ⋯ ( m + 1 ) ⋅ r m + 2 + 3 × 4 × ⋯ ( m + 2 ) r m + 3 + ⋯ r \cdot s0 =1 \times 2 \times \cdots m \cdot r^{m+1}+2 \times 3 \times \cdots (m+1) \cdot r^{m+2}+3 \times 4 \times \cdots (m+2)r^{m+3}+ \cdots r⋅s0=1×2×⋯m⋅rm+1+2×3×⋯(m+1)⋅rm+2+3×4×⋯(m+2)rm+3+⋯
相减得
( 1 − r ) s 0 = 1 × 2 × ⋯ m ⋅ r m + 2 × 3 × ⋯ m ⋅ m ⋅ r m + 1 + 3 × 4 × ⋯ ( m + 1 ) ⋅ m ⋅ r m + 2 + ⋯ (1-r)s0=1 \times 2 \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots m \cdot m \cdot r^{m+1}+3 \times 4 \times \cdots (m+1) \cdot m \cdot r^{m+2}+ \cdots (1−r)s0=1×2×⋯m⋅rm+2×3×⋯m⋅m⋅rm+1+3×4×⋯(m+1)⋅m⋅rm+2+⋯
可以看到我们将除了 r m \ r^{m} rm以外的系数多了m。我们继续用这样方法
设 s 1 = ( 1 − r ) s 0 设s1=(1-r)s0 设s1=(1−r)s0
s 1 = 1 × 2 × ⋯ m ⋅ r m + 2 × 3 × ⋯ m ⋅ m ⋅ r m + 1 + 3 × 4 × ⋯ ( m + 1 ) ⋅ m ⋅ r m + 2 + ⋯ s1=1 \times 2 \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots m \cdot m \cdot r^{m+1}+3 \times 4 \times \cdots (m+1) \cdot m \cdot r^{m+2}+ \cdots s1=1×2×⋯m⋅rm+2×3×⋯m⋅m⋅rm+1+3×4×⋯(m+1)⋅m⋅rm+2+⋯
r ⋅ s 1 = 1 × 2 × ⋯ m ⋅ r m + 1 + 2 × 3 × ⋯ m ⋅ m ⋅ r m + 2 + 3 × 4 × ⋯ ( m + 1 ) ⋅ m ⋅ r m + 3 + ⋯ r \cdot s1=1 \times 2 \times \cdots m \cdot r^{m+1}+2 \times 3 \times \cdots m \cdot m \cdot r^{m+2}+3 \times 4 \times \cdots (m+1) \cdot m \cdot r^{m+3}+ \cdots r⋅s1=1×2×⋯m⋅rm+1+2×3×⋯m⋅m⋅rm+2+3×4×⋯(m+1)⋅m⋅rm+3+⋯
两式相减得
( 1 − r ) s 1 = 1 × 2 × ⋯ m ⋅ r m + 2 × 3 × ⋯ m ( m − 1 ) r m + 1 + 3 × 4 × ⋯ m ⋅ m ( m − 1 ) r m + 2 + ⋯ (1-r)s1=1 \times 2 \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots m(m-1)r^{m+1}+3 \times 4 \times \cdots m \cdot m(m-1) r^{m+2} +\cdots (1−r)s1=1×2×⋯m⋅rm+2×3×⋯m(m−1)rm+1+3×4×⋯m⋅m(m−1)rm+2+⋯
设 s 2 = ( 1 − r ) s 1 设s2=(1-r)s1 设s2=(1−r)s1
s 2 = 1 × 2 × ⋯ m ⋅ r m + 2 × 3 × ⋯ m ( m − 1 ) r m + 1 + 3 × 4 × ⋯ m ⋅ m ( m − 1 ) r m + 2 + ⋯ s2=1 \times 2 \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots m(m-1)r^{m+1}+3 \times 4 \times \cdots m \cdot m(m-1) r^{m+2} +\cdots s2=1×2×⋯m⋅rm+2×3×⋯m(m−1)rm+1+3×4×⋯m⋅m(m−1)rm+2+⋯
r ⋅ s 2 = 1 × 2 × ⋯ m ⋅ r m + 1 + 2 × 3 × ⋯ m ( m − 1 ) r m + 2 + 3 × 4 × ⋯ m ⋅ m ( m − 1 ) r m + 3 + ⋯ r \cdot s2=1 \times 2 \times \cdots m \cdot r^{m+1}+2 \times 3 \times \cdots m(m-1)r^{m+2}+3 \times 4 \times \cdots m \cdot m(m-1) r^{m+3} +\cdots r⋅s2=1×2×⋯m⋅rm+1+2×3×⋯m(m−1)rm+2+3×4×⋯m⋅m(m−1)rm+3+⋯
两式相减得
( 1 − r ) s 2 = 1 × 2 × × ⋯ m ⋅ r m + 2 × 3 × ⋯ m ( m − 2 ) r m + 1 + 3 × 4 × ⋯ m ( m − 1 ) ( m − 2 ) r m + 2 + ⋯ (1-r)s2=1 \times 2 \times \times \cdots m \cdot r^{m}+2 \times 3 \times \cdots m(m-2)r^{m+1}+3 \times 4 \times \cdots m(m-1)(m-2)r^{m+2}+ \cdots (1−r)s2=1×2××⋯m⋅rm+2×3×⋯m(m−2)rm+1+3×4×⋯m(m−1)(m−2)rm+2+⋯
以此类推,最后得出(提醒一句, k \ k k是最高次)
s 0 = m ! r m ( 1 − r ) m + 1 s0=m! \frac{r^{m}}{(1-r)^{m+1}} s0=m!(1−r)m+1rm
s = s 0 m ! = r m ( 1 − r ) m + 1 s=\frac{s0}{m!}=\frac{r^{m}}{(1-r)^{m+1}} s=m!s0=(1−r)m+1rm
这样我们就得到了一个通项公式
现在我们求的就是
a
0
,
a
1
,
a
2
⋯
a
k
\ a_{0},a_{1},a_{2} \cdots a_{k}
a0,a1,a2⋯ak
由于
f ( n ) = a 0 ( n 0 ) + a 1 ( n 1 ) + ⋯ + a k ( n k ) f(n)=a_{0}\binom{n}{0}+a_{1}\binom{n}{1}+ \cdots +a_{k}\binom{n}{k} f(n)=a0(0n)+a1(1n)+⋯+ak(kn)
我们可以证明出
∑ n = 0 ∞ f ( n ) r n = ∑ n = 0 k a n r n ( 1 − r ) n + 1 \sum_{n=0}^{ \infty }f(n)r^{n}=\sum_{n=0}^{k}a_{n} \frac{r^{n}}{(1-r)^{n+1}} n=0∑∞f(n)rn=n=0∑kan(1−r)n+1rn
求得
a
0
,
a
1
,
⋯
a
k
\ a_{0},a_{1}, \cdots a_{k}
a0,a1,⋯ak即可求得正解(提醒一句,
k
\ k
k是最高次)
又由于
f ( 0 ) = a 0 ( 0 0 ) f(0)=a_{0}\binom{0}{0} f(0)=a0(00)
f ( 1 ) = a 0 ( 1 0 ) + a 1 ( 1 1 ) f(1)=a_{0}\binom{1}{0}+a_{1}\binom{1}{1} f(1)=a0(01)+a1(11)
f ( 2 ) = a 0 ( 2 0 ) + a 1 ( 2 1 ) + a 2 ( 2 2 ) f(2)=a_{0}\binom{2}{0}+a_{1}\binom{2}{1}+a_{2}\binom{2}{2} f(2)=a0(02)+a1(12)+a2(22)
⋯   ⋯   ⋯   ⋯ \cdots \, \cdots \, \cdots \, \cdots ⋯⋯⋯⋯
f ( k ) = a 0 ( k 0 ) + a 1 ( k 1 ) + ⋯ + a k ( k k ) f(k)=a_{0}\binom{k}{0}+a_{1}\binom{k}{1}+ \cdots +a_{k}\binom{k}{k} f(k)=a0(0k)+a1(1k)+⋯+ak(kk)
这样就变成了一个多元方程组的问题,整理得
a 0 = ( 0 0 ) f 0 a_{0}=\binom{0}{0} f{0} a0=(00)f0
a 1 = − ( 1 0 ) f ( 0 ) + ( 1 1 ) f ( 1 ) a_{1}=-\binom{1}{0} f(0)+\binom{1}{1} f(1) a1=−(01)f(0)+(11)f(1)
a 2 = ( 2 0 ) f ( 0 ) − ( 2 1 ) f ( 1 ) + ( 2 2 ) f ( 2 ) a_{2}=\binom{2}{0} f(0)-\binom{2}{1} f(1)+\binom{2}{2} f(2) a2=(02)f(0)−(12)f(1)+(22)f(2)
⋯   ⋯   ⋯   ⋯ \cdots \, \cdots \, \cdots \, \cdots ⋯⋯⋯⋯
a k = ( − 1 ) k ( k 0 ) f ( 0 ) + ( − 1 ) k − 1 ( k 1 ) f ( 1 ) + ⋯ ( − 1 ) 0 ( k k ) f ( k ) a_{k}=(-1)^{k}\binom{k}{0} f(0)+(-1)^{k-1}\binom{k}{1} f(1)+ \cdots (-1)^{0} \binom{k}{k} f(k) ak=(−1)k(0k)f(0)+(−1)k−1(1k)f(1)+⋯(−1)0(kk)f(k)
对于计算机而言,这些问题都是可以在 O(n*n) 之内求得。优化后,可以使用多项式多点求值和NTT求得 。O(n logn logn)
证明(1)
f ( n ) = a 0 ( n 0 ) + a 1 ( n 1 ) + ⋯ + a k ( n k ) f(n)=a_{0}\binom{n}{0}+a_{1}\binom{n}{1}+ \cdots +a_{k}\binom{n}{k} f(n)=a0(0n)+a1(1n)+⋯+ak(kn)
有于每个组合数展开后形成一个多项式,最高次递增,其各项系数可以满足多元方程组。
由 于 ( n m ) 是 一 个 关 于 n 的 m 次 多 项 式 由于\binom{n}{m}是一个关于n的m次多项式 由于(mn)是一个关于n的m次多项式
设
( n m ) = b m , 0 + b m , 1 n + b m , 2 n 2 + ⋯ b m , m n m \binom{n}{m}=b_{m,0}+b_{m,1}n+b_{m,2}n^{2}+ \cdots b_{m,m}n^{m} (mn)=bm,0+bm,1n+bm,2n2+⋯bm,mnm
我们得到方程组
( n 0 ) = b 0 , 0 \binom{n}{0}=b_{0,0} (0n)=b0,0
( n 1 ) = b 1 , 0 + b 1 , 1 n \binom{n}{1}=b_{1,0}+b_{1,1}n (1n)=b1,0+b1,1n
( n 2 ) = b 2 , 0 + b 2 , 1 n + b 2 , 2 n 2 \binom{n}{2}=b_{2,0}+b_{2,1}n+b_{2,2}n^{2} (2n)=b2,0+b2,1n+b2,2n2
⋯   ⋯   ⋯   ⋯ \cdots \, \cdots \, \cdots \, \cdots ⋯⋯⋯⋯
易证 b i j = ≠ 0              i ∈ [ 0 , m ] , j ∈ [ 0 , m ] \ b_{ij} = \neq 0 \,\,\,\,\,\,\,\,\,\,\,\, i \in [0,m],j \in [0,m] bij≠=0i∈[0,m],j∈[0,m]
设原方程
f ( n ) = c 0 + c 1 n 1 + c 2 n 2 + ⋯ c k n k f(n)=c_{0}+c_{1}n^{1}+c_{2}n^{2}+ \cdots c_{k}n^{k} f(n)=c0+c1n1+c2n2+⋯cknk
有方程组
a 0 b 0 , 0 + a 1 b 1 , 0 + a 2 b 2 , 0 + ⋯ + a k b k , 0 ⎵ k + 1 项 = c 0 \underbrace{ a_{0}b_{0,0}+a_{1}b_{1,0}+a_{2}b_{2,0}+ \cdots +a_{k}b_{k,0} }_{k+1项}=c_{0} k+1项 a0b0,0+a1b1,0+a2b2,0+⋯+akbk,0=c0
a 1 b 0 , 1 + a 2 b 1 , 1 + a 3 b 2 , 1 + ⋯ + a k b k , 1 ⎵ k 项 = c 1 \underbrace{ a_{1}b_{0,1}+a_{2}b_{1,1}+a_{3}b_{2,1}+ \cdots +a_{k}b_{k,1} }_{k项}=c_{1} k项 a1b0,1+a2b1,1+a3b2,1+⋯+akbk,1=c1
a 2 b 0 , 2 + a 3 b 1 , 2 + a 4 b 2 , 2 + ⋯ + a k b k , 2 ⎵ k − 1 项 = c 2 \underbrace{ a_{2}b_{0,2}+a_{3}b_{1,2}+a_{4}b_{2,2}+ \cdots +a_{k}b_{k,2} }_{k-1项}=c_{2} k−1项 a2b0,2+a3b1,2+a4b2,2+⋯+akbk,2=c2
⋯   ⋯   ⋯   ⋯ \cdots \, \cdots \, \cdots \, \cdots ⋯⋯⋯⋯
a k b k , k = = c k a_{k}b_{k,k}==c_{k} akbk,k==ck
由于项数不断减少,此方程显然有解