我怎么可能学会生成函数?

· · 算法·理论

cnblogs

[2025-03-17] 基本完工,之后可能随机更新。

[2025-03-27] 增加了 P4931。

普通生成函数(OGF)

定义:序列 a 的普通生成函数为 \sum a_i x^i

加法运算:多项式直接加,合并同类项。对应到序列上意义是对应位置相加。

乘法运算:设 a,b 两个序列的生成函数是 F(x)G(x),发现 F(x)\cdot G(x) 得到的是 \sum_{i=0}^{n+m} \sum_{j=0}^i a_j b_{i-j} x^i,也就是序列 c_i = \sum_{j=0}^i a_j b_{i-j} 的生成函数。序列 ca,b 的加法卷积。多个序列加法卷积起来可以看成是无序背包。

在运算中,常常使用生成函数的封闭形式,比如:

序列 1,1,1,1,\dots 的 OGF \sum_i x^i = \frac{1}{1-x};

序列 1,c,c^2,c^3,\dots 的 OGF \sum_i c^ix^i = \frac{1}{1-cx}

序列 1,0,1,0,\dots (下标从 0 开始)的 OGF \sum_i x^{2i} =\frac{1}{1-x^2};

序列 a_i=c^i x^{ki} 的 OGF \sum_i a_i=c^i x^{ki} = \frac{1}{1-cx^k}

斐波那契数列 OGF 封闭形式为 \frac{x}{1-x-x^2}

以上几个通过错位相减容易得到。

序列 \binom{n}{0},\binom{n}{1},\dots,\binom{n}{n} 的 OGF \sum_{i=0}^n \binom{n}{i} x^i = (x+1)^n;

序列 \binom{n}{0},-\binom{n}{1},\binom{n}{2},\dots,(-1)^n \binom{n}{n} 的 OGF \sum_{i=0}^n \binom{n}{i} (-x)^i = (1-x)^n

以上通过二项式定理得到。

序列 \binom{n}{n},\binom{n+1}{n},\dots,\binom{n+k}{n},\dots 的生成函数 \sum_i \binom{n+i}{n} x^i = \frac{1}{(1-x)^{n+1}}

以上我不会推,先记着吧。 考虑组合意义,\binom{n+k}{n} 可以看成有 n+k+1 个物品,将其分成 n+1 份,每份都有 \geq 1 个物品的方案数,给每份拿走一个,就是 k 个物品分成至多 n+1 份的方案数。考虑背包,f_k 表示 k 个物品的方案(即上述序列),每次加入任意个物品,加入 n+1 次。设 f 的生成函数是 F(x),用多项式表示加入的过程,F(x)=(\sum_i x^i)^{n+1} = \frac{1}{(1-x)^{n+1}}

CF1096G

不难发现其实是要求 f_i 表示长度为 \frac{n}{2} 和为 i 的方案数,答案即为 \sum f_i^2

也就是一个背包,每次放一个 0\sim 9 的数,一共放 \frac{n}{2} 个。

放一个数的答案 OGF 是 F(x)=\sum_{i=0}^9 x^i,最终答案的 OGF 为 F^{\frac{n}{2}}(x),用 NTT 算一下系数。

本题没有要求对 x^n 取模,并且答案多项式最高次数是 9\times 10^5 在计算范围内,不需要大常数多项式快速幂,可以一遍 FFT,算下点值表示的 \frac{n}{2} 次幂,再 IFFT 回去,常数大大减小。

P2000

计算题。写出每个部分的 OGF 再乘起来观察。

\frac{1}{1-x^6} \cdot \frac{1-x^{10}}{1-x} \cdot \frac{1-x^6}{1-x} \cdot \frac{1}{1-x^4} \cdot \frac{1-x^8}{1-x} \cdot \frac{1}{1-x^2} \cdot (1+x) \cdot \frac{1}{1-x^8} \cdot \frac{1}{1-x^{10}} \cdot \frac{1-x^4}{1-x} \\ =\frac{1+x}{(1-x)^4(1-x^2)} =\frac{1}{(1-x)^5}

发现这是 \binom{4+i}{i} 的 OGF,答案为 [x^n] \frac{1}{(1-x)^5},即 \binom{4+n}{n} =\binom{n+4}{4} = \frac{n(n-1)(n-2)(n-3)}{24} ,高精度算一下。

P4451

斐波那契数列的 OGF 为 F(x) =\frac{x}{1-x-x^2},该题的答案的生成函数是 G(x) =\sum_{i>0} F^i(x) = \frac{F(x)}{1-F(x)} = \frac{x}{1-2x-x^2}

注意到 n 很大,不能暴力多项式求系数。感觉这个答案比较像斐波那契数列的形式,考虑用类似的方法解通项公式。

考虑形如 \frac{1}{1-cx} 的幂级数,希望将其写成若干上述东西的和。

对分母因式分解,解 1-2x-x^2=0,得 x_1=-1+\sqrt 2,x_2=-1-\sqrt 2,于是 1-2x-x^2=-(x-x_1)(x-x_2)。(注意有个负号,第一遍没看到结果推错了)

希望将其写成 \frac{a}{x-x_1}+\frac{b}{x-x_2},解方程 \frac{a}{x-x_1}+\frac{b}{x-x_2} =\frac{x}{1-2x-x^2},即 a(x-x_2)+b(x-x_1)=-x

移项得 (a+b+1)x=ax_2+bx_1 恒成立,即 a+b=-1,ax_2+bx_1=0

带入 x_1,x_2 可得 a=\frac{\sqrt 2 -2}{4},b=\frac{-\sqrt 2 -2}{4}

[x^n] \frac{x}{1-2x-x^2} = [x^n] (\frac{a}{x-x_1} + \frac{b}{x-x_2}) \\ =[x^n] \frac{-\frac{a}{x_1}}{1-\frac{x}{x_1}} + [x^n] \frac{-\frac{b}{x_2}}{1-\frac{x}{x_2}} \\ =-\frac{a}{x_1} \cdot \frac{1}{x_1^n} -\frac{b}{x_2} \cdot \frac{1}{x_2^n} \\ = -\frac{a}{x_1 ^{n+1}} -\frac{b}{x_2 ^{n+1}}

x_1,x_2,a,b 带回去,得到

-\frac{\sqrt 2-2}{4} (1+\sqrt 2) ^{n+1} -\frac{-2 -\sqrt 2}{4} (1-\sqrt 2) ^{n+1} \\ = \frac{\sqrt 2}{4} [(1+\sqrt 2)^n-(1-\sqrt 2)^n]

这是答案的通项公式,直接快速幂计算即可。指数很大,根据费马小定理对 \bmod-1 取模。

本题 \bmod 1000000007 意义下 \sqrt 2 存在,为 59713600940286407,可以直接算。若不存在,可以考虑手写一个结构体 a\sqrt 2 +b 来运算。

P4389

答案 OGF F(x) = \prod_{i=1}^n \frac{1}{(1-x^{v_i})} = \frac{1}{\prod_{i=1}^m{(1-x^{v_i})}}

看到这种乘积,容易想到取 \ln

G(x)=\ln(F(x)) = - \sum_{i=1}^m \ln(1-x^{v_i})

注意到 \ln(1-x^{v_i}) = - \sum_{i\geq 1} \frac{x^{vi}}{i}(建议背诵),推导过程如下:

f(x) = 1-x^v,g(x) = \ln(f(x))

g'(x) = \frac{f'(x)}{f(x)} = \frac{-vx^{v-1}}{1-x^v} \\ = -vx^{v-1} \sum_{i\geq 0} x^{vi} = -v \sum_{i\geq 0} x^{v+vi-1} \\ g(x)= -v \sum_{i\geq 0} \frac{x^{v+vi}}{v+vi} = - \sum_{i\geq 0} \frac{x^{v+vi}}{i+1} = -\sum_{i\geq 1} \frac{x^{vi}}{i}

于是 G(x)=\sum_{i=1}^m \sum_{j\geq 1} \frac{x^{v_ij}}{j}

有了这个式子后,对于每个 v 就可以 O(\frac{m}{v}) 处理系数,对于相同的 v 一起处理,复杂度是调和级数的 O(n\log n)

求出 G(x) 之后再 \exp 回去就行。

P3784

发现这题就是上面那题反过来。

f 的 OGF 为 F(x)G(x)= \ln(F(x))= \sum_{i\in S} \sum_{j\geq 0} \frac{x^{ij}}{j}

对给出的 f\ln 得到 g,然后由于字典序最小,从小到大看 g 的每一位是否是 0,若不是,说明这个数存在,就加入答案并把后面都减去这个数的贡献。

黑的原因大概是任意模数罢。

梦熊省选第 25 场 T2

题目要求最大环长为 1 或 2,逆序对数为 i 的排列数量的奇偶性。注意到最大环长 >2 的排列将某个 >2 环所有边方向取反可以得到另一个不同的排列,因此会两两抵消,不会对答案产生影响。

所以只需要求 f_i 表示逆序对数为 i 的方案数,考虑 dp,f_{i,j} 表示加入前 i 个数,当前逆序对数为 j 的方案数,f_{i,j}=\sum_{k=0}^{i-1} f_{i-1,j-k}

这个 dp 是背包形式,可以写成多项式相乘,设 f_n 的生成函数为 F(x)

F(x)= \prod_{i=1}^{n} \sum_{j=0}^{i-1} x^j = \prod_{i=1}^{n} \frac{1-x^i}{1-x}

考虑对分子和分母分开计算,分母 \prod_{i=1}^n (1-x^i),每个因式项数都很少,可以直接背包,忽略 \leq k 的项,使用 bitset 优化,复杂度 O(\frac{k^2}{\omega})

分子部分,\frac{1}{(1-x)^n} = \sum_{i} \binom{n-1+i}{i}x^i,对于每项使用 lucas 定理计算那个组合数的奇偶性(关于组合数奇偶性的结论来自 P3773)。

然后再把分子部分与分母部分卷起来,同样用 bitset 优化背包做到 O(\frac{k^2}{\omega})

P7435

几乎从头到尾的任何一部分都可以在其他题里面找到,但是我怎么推了这么长时间。哦原来是一开始题读错了。

根据题意考虑 dp,设 f_{i,j} 表示已经加入了前 i 个数,有 j 个逆序对的权值和,发现每加入一个数 i 可能新增 0\sim i-1 个逆序对,所以转移是 f_{i,j} =\sum_{k=0}^{i-1} i^k f_{i-1,j-k}

这样的转移可以写成卷积形式。f_n 的生成函数为 F(x)=\prod_{i=1}^n \sum_{j=0}^{i-1} i^j

F(x)= \prod_{i=1}^n \sum_{j=0}^{i-1} i^jx^j = \prod_{i=1}^{n} \frac{1-(ix)^i}{1-ix}

熟悉的乘积形式,考虑取 \ln

\ln(F(x)) = \sum_{i=1}^n\ln(1-(ix)^i) -\sum_{i=0}^{n-1} \ln(1-ix)

是一堆 \ln(1-(cx)^k) 状物,用类似 P4389 的方式求导以求出系数(现在发现 P4389 真有用吧)。

\ln'(1-(cx)^k) = \frac{-kc(cx)^{k-1}}{1-(cx)^k} \\ =-kc(cx)^{k-1} \sum_i (cx)^{ki} =-kc \sum_i (cx)^{ki+k-1} \\ \ln(1-(cx)^k) =-kc\sum_{i\geq 0} \frac{c^{ki+k-1}x^{ki+k}}{ki+k} \\ =-kc\sum_{i\geq 1} \frac{c^{ki-1}x^{ki}}{ki} = -\sum_{i\geq 1} \frac{c^{ki}x^{ki}}{i}

得到以上东西后,再代回 \ln(F(x)),即可得到 \ln(F(x)) 的各项系数。

\ln(F(x)) = -\sum_{i=1}^n \sum_{j\geq 1} \frac{i^{ij}x^{ij}}{j}+\sum_{i=1}^n\sum_{j\geq 1} \frac{i^jx^j}{j} \\ [x^m]\ln(F(x)) = \frac{1}{m}(\sum_{i=1}^n i^m-\sum_{i|m,1\leq i\leq n} i^{m+1})

我们需要求出这个东西的前 k 项系数。对于后半部分,虽然 i 的取值是 1\sim n,但是能对答案造成影响的一定是 \leq k 的数的约数,直接枚举 i(i\leq \min(n,k)) 然后计算它对其 \leq k 的倍数的影响即可做到 O(k\log k)

对于前半部分,类似 [忘了是哪题了],写出它的 EGF,

G(x)=\sum_i \frac{\sum_{j=1}^n j^ix^i}{i!} = \sum_{j=1}^n \sum_i \frac{j^ix^i}{i!} \\ =\sum_{j=1}^n e^{jx} = \frac{e^{(n+1)x}-e^x}{e^x-1}

然后这个 G(x) 的系数是可以求的(注意上下常数项都是 0,但分母要求逆要求常数项不是 0,所以上下同除以 x 即可)。

然后就做完了,求出 \ln(F(x)) 再求 \exp

P4931

考虑非加强版的做法,设 g_ii 对情侣都不和睦的方案数。答案是 g_{n-k} 乘上剩下的 k 对情侣和睦的方案数,后面是好算的,若能快速求出 g_i 就可以 O(1) 回答询问。

计算 g_k 考虑容斥,钦定 i 对和睦,g_k = \sum_{i=0}^k (-1)^i \binom{k}{i} 2^i \frac{k!}{(k-i)!} (2k-2i)!

考虑写出 g 的生成函数 F(x)

F(x)=\sum_k g_k x^k \\ =\sum_k \sum_{i=0}^k (-2)^i \frac{k!k!}{(k-i)!(k-i)!i!} (2k-2i)! x^k \\ =\sum_k k!k!x^k\sum_{i=0}^k \frac{(-2)^i}{i!} \binom{2(k-i)}{k-i}\\

于是 [x^k]F(x) = k!k! \sum_{i+j=k} \frac{(-2)^i}{i!}\binom{2j}{j},设 G(x)\frac{g_k}{k!k!} 的生成函数,

G(x) = \sum_i \frac{(-2)^i}{i!} \sum_j \binom{2j}{j} x^{i+j} \\ = \sum_i \frac{(-2x)^i}{i!} \sum_j \binom{2j}{j} x^j = \frac{e^{-2x}}{(1-4x)^{\frac{1}{2}}} G'(x) = \frac{-2e^{-2x}(1-4x)^{1/2} +2e^{-2x} (1-4x)^{-1/2}}{1-4x} \\ = \frac{2e^{-2x} ((1-4x)^{-1}-1)}{(1-4x)^{1/2}} = 2((1-4x)^{-1}-1) G(x) = \frac{-8x}{4x-1} G(x) \\ (4x-1)G'(x) = 8xG(x) ,[x^k](4x-1)G'(x) = [x^k] -8xG(x) \\ 4kg'_{k} - (k+1)g'_{k+1}= -8g'_{k-1},g'_k = \frac{g_k}{k!k!}

根据递推式求出 g'_k 即可得到 g_k

指数生成函数(EGF)

定义序列 a 的指数生成函数为 \sum_i a_i \frac{x^i}{i!}

加法运算:同样是对应位置直接加。

乘法运算:设 a,b 的指数生成函数为 F(x),G(x),项数分别为 nmF(x)\cdot G(x) = \sum_{i=0}^{n+m} \sum_{j=0}^i a_j b_{i-j} \frac{x^i}{j!(i-j)!} = \sum_{i=0}^{n+m} \sum_{j=0}^i \binom{i}{j} a_j b_{i-j} \frac{x^i}{i!},也就是序列 c_i = \sum_{j=0}^i \binom{i}{j} a_j b_{i-j} 的生成函数。

OGF 一般是集合计数,而 EGF 一般是序列计数。

对于指数生成函数还有一种理解:序列 \frac{a_i}{i!} 的普通生成函数。我们知道,普通生成函数可以看成无序组合,把这个 \frac{a_i}{i!} 卷起来再第 n 项乘上 n!,也就是全排,但实际上每个部分内部的顺序已经确定,并不需要再排,应当去掉全排时导致增加的内部顺序,这个可以提前去掉,即 \frac{a_i}{i!}

EGF 运算中同样经常使用封闭形式。

序列 1,1,1,\dots 的 EGF 是 \sum_i \frac{x^i}{i!} = e^x,可用泰勒展开,但我不会,所以就直接背了吧。

序列 1,c,c^2,c^3,\dots 的 EGF 是 \sum_i \frac{c^ix^i}{i!} = e^{cx},类比上面的东西得到。

序列 1,0,1,0,1,\dots 的 EGF 是 \sum_i \frac{x^i}{i!} [i \bmod 2 = 0] = \frac{e^x+e^{-x}}{2},即奇数项相抵消,偶数项算了两遍所以要乘 \frac{1}{2}

序列 0,1,0,1,0,\dots 类比得到 \frac{e^x-e^{-x}}{2}

P5219

考虑 Prufer 序列,可以用长度 n-2 的序列与 n 个点有标号无根树构成双射,且每个点在序列中出现的次数为 d_x -1d 为度数)。

可以看成每个数放 0 \sim M-1 个,最终的序列有多少种可能。

使用 EGF,每个数的 EGF 是 F(x)= \sum_{i<M} \frac{x^i}{i!},答案是 (x-2)! [x^{n-2}] F^n(x),多项式快速幂算一下即可。

P10588

即计数长度为 m 的操作序列,其中 1\sim l 出现奇数次,l+1\sim n 出现偶数次。

容易写出 EGF F(x)=(\sum_{i\bmod 2=1} \frac{x^i}{i!})^l (\sum_{i\bmod 2=0} \frac{x^i}{i!})^{n-l} = (\frac{e^x-e^{-x}}{2})^l(\frac{e^x+e^{-x}}{2})^{n-l},然后答案就是 m![x^m]F(x)

m![x^m]F(x)=\frac{m!}{2^n} [x^m](e^x-e^{-x})^l(e^x+e^{-x})^{n-l} \\ =\frac{m!}{2^n} [x^m] e^{-nx} (e^{2x}-1)^l(e^{2x}+1)^{n-l}

G(x)= (x-1)^l(x+1)^{n-l},考虑通过求导法 G(x) 的系数 g 的递推式:

G'(x) = l(x-1)^{l-1}(x+1)^{n-l}+(n-l)(x-1)^l(x+1)^{n-l-1} \\ (x-1)(x+1)G'(x)= (lx+l)G(x)+(nx-lx-n+l)G(x) \\ [x^k](x^2-1)G'(x)=[x^k](nx+2l-n)G(x) \\ (k-1)g_{k-1}-(k+1)g_{k+1} =ng_{k-1} + (2l-n)g_k \\ g_{k+1} = \frac{(n-2l)g_k-(n-k+1)g_{k-1}}{k+1}

于是我们得到了递推式,g_0g_1 容易自己算出来,剩下来的通过这个式子递推。

现在答案表示为 \frac{m!}{2^n} [x^m] e^{-nx} G(e^{2x}),令 H(x)=e^{-nx} G(e^{2x}),继续化简 G(x)

H(x)=e^{-nx} G(e^{2x}) \\ = e^{-nx} \sum_{i=0}^n g_i e^{2ix} = \sum_{i=0}^n g_i e^{(2i-n)x} \\ = \sum_{i=0}^n g_i \sum_j \frac{(2i-n)^jx^j}{j!} ans=\frac{m!}{2^n} [x^m] H(x) = \frac{m!}{2^n}\sum_{i=0}^n g_i \frac{(2i-n)^m}{m!} \\ =\frac{1}{2^n} \sum_{i=0}^n g_i(2i-n)^m

现在答案已经是可以计算的形式了,带入计算即可。

由于 m 较大,算快速幂的时候 m998244352 取模,这时候有个 corner case:0^0=1,0^{998244352}=0,需要特判。

P6555

奈绪可爱 qwq

观察到我们可以认为一个集合中的数,若出现 b 次,集合中的数为 [l,r] 中的正整数,则和的期望是 b\cdot\frac{l+r}{2}。因为从小到大排序后,对称的数列显然,不对称的考虑将其翻转,再将每个数 x 变为 l+r-x,可以得到一个与它不同的序列,两个的平均值刚好为 b\cdot\frac{l+r}{2}

由于求总和,考虑对每个集合分别计算,其选 i 个数时的和乘上剩余部分方案数,再求和。算方案数时,一个集合放 i 个数的方案有 \binom{i+a-1}{a-1} 中,多个集合背包即可。可以使用可撤销背包算贡献,做到 O(nk^2),但这显然不能通过本题。

发现背包卷积的形式可以用 EGF 卷积表示,对于方案数,每个集合的 EGF 是 F_k(x)= \sum_{i=1}^{b_k} \frac{\binom{i+a_k-1}{a_k-1}x^i}{i!},对于需要算贡献的集合的 EGF 是 G_k(x)= \sum_{i=1}^{b_k} \frac{avg_k\binom{i+a_k-1}{a_k-1}x^i}{i!},其中 avg_k 即所有可能出现在第 k 集合中的数的平均数。

H(x) =\sum_{i=1}^n G_i(x) \prod_{j\neq i} F_j(x),答案就是 \sum_{i=1}^m i![x^i]H(x),只需求出 H(x) 的系数。

考虑分治,存每个区间的 F(x)H(x),合并时候 F(x)=F_l(x)F_r(x),H(x)=H_l(x)F_r(x)+F_l(x)H_r(x),边界 l=rF 就是这个集合的 FH 是这个集合的 G。分治有 \log 层因此每个式子只会被乘 \log 次,时间复杂度 O(k\log^2 k)

P5850

原题任意模数似乎还不那么好用多项式做,所以原题才是加强版(雾

每个数最多出现一次,数 k 的 EGF 是 F_k(x)=\frac{x^0}{0!}+\frac{kx^1}{1!} = kx+1,答案是 n! [x^n] \prod_{i=1}^k F_i(x) = n![x^n] G(x)

看到这个乘积,考虑类似 P4389 地取 \ln\ln(G(x))= \sum_{i=1}^k \ln(kx+1)

\ln'(kx+1) = \frac{k}{kx+1} = k \frac{1}{1-(-kx)} \\ =k \sum_{i\geq 0} (-k)^ix^i \\ \ln(kx+1) = k \sum_{i\geq 1} (-k)^{i-1} \frac{x^i}{i} \\ \ln(G(x)) = \sum_{i=1}^k i \sum_{j\geq 1} \frac{(-i)^{j-1}}{j} x^j = \sum_{i=1}^k \sum_{j\geq 1} \frac{(-1)^{j-1}i^j}{j} x^j \\ [x^i]\ln(G(x)) = \frac{(-1)^{i-1}}{i} \sum_{j=1}^k j^i

现在如果能快速求出 \ln(G(x)) 的各项系数,也就是快速求 \sum_{j=1}^k j^i 状物,再求 \exp 就可以得到 G(x)

考虑写出上述东西的 EGF:

H(x)=\sum_{i} \frac{\sum_{j=1}^k j^i x^i}{i!} \\ = \sum_{j=1}^k \sum_i \frac{j^ix^i}{i!} = \sum_{j=1}^k e^{jx} \\ = \frac{e^{(k+1)x}-e^x}{e^x-1}

不难得到 H(x) 分子和分母的各项系数,对分母求逆再与分子乘起来即可得到 H(x) 的系数 h。但是注意到分母常数项为 0,不能求逆;注意到分子常数项也为 0,直接分子分母同除以 x 就行。求系数时别漏了 \frac{1}{i!}

接下来得到 \ln(G(x)),再 \exp 得到 G(x),即可得到答案。EGF 题别忘了乘 n!

P5825

这题不难而且做法挺多,我只会最笨的那种。

考虑先计算钦定有 kp_i<p_{i+1} 的位置的方案数 f_i,再通过二项式反演求出答案 g_i

考虑钦定 k 个如上位置实际上等价于将排列划分为 n-k 段,每一段都上升。设排列 q 满足 q_{p_i}=i,这样的 pq 显然是一一对应的,所以可以直接计数这样的 q

考虑上面的限制对应到 q 上就是分成几组位置,组内保证有序。这是经典的 EGF 问题。一组的生成函数为 \sum_{i\geq 1} \frac{x^i}{i!}=e^x-1,而 f_{n-i}=n![x^n] (e^x-1)^i

f_n=n![x^n] (e^x-1)^i = n![x^n]\sum_{j=0}^i \binom{i}{j} (-1)^{i-j} e^{jx} \\ = n![x^n]\sum_{j=0}^i \binom{i}{j} (-1)^{i-j} \sum_k \frac{j^kx^k}{k!} \\ =\sum_{j=0}^i \binom{i}{j} (-1)^{i-j} j^n =i!\sum_{j=0}^i \frac{j^n}{j!} \frac{(-1)^{i-j}}{(i-j)!}

将其化成卷积形式一次 NTT 即可算出 f

而二项式反演是众所周知的可以用 NTT 加速:

g_i =\sum_{j=i}^n (-1)^{j-i} \binom{j}{i} f_j =\frac{1}{i!} \sum_{j=i}^n \frac{(-1)^{j-i}}{(j-i)!} j! f_j

h_i= \frac{(-1)^{n-i}}{(n-i)!},那么 g_i=\frac{1}{i!} [x^{n+i}] F(x)H(x)