数论学习笔记

BSGS

普通BSGS

求解 axb(modp)a^x \equiv b \pmod p ,其中 apa \perp p

方程的解满足 0x<p0 \le x < p

x=ApBx = A \lceil \sqrt{p} \rceil - B ,其中 0A,Bp0 \le A,B \le \lceil \sqrt{p} \rceil ,所以

aApbaB(modp) a^{A \lceil \sqrt{p} \rceil} \equiv ba^B \pmod{ p }

可以先算出等式右边 baBba^B 的所有取值,将其存到一个 hash 表里。
然后计算 aApa^{A \lceil \sqrt{p} \rceil} 并查表寻找是否有相等值,即可得到xx

因为 A,BpA,B \le \sqrt{p} ,所以时间复杂度就是 O(p)O(\sqrt{p})

扩展BSGS

现在 aapp 不一定互质。

不互质就硬搞成互质的,设 d1=gcd(a,p)d_1 = \gcd(a,p)

如果 d1bd_1 \nmid b ,则方程无解,否则把方程同时除以 d1d_1 ,得到

ad1ax1bd1(modpd1) \frac{a}{d_1} \cdot a^{x-1} \equiv \frac{b}{d_1} \pmod{ \frac{p}{d_1} }

ppd1d_1 不互质就再除,直到 apd1d2dka \perp \frac{p}{d_1 d_2 \cdots d_k}

D=i=1kdiD = \prod _{ i=1 } ^{k} d_i ,所以我们得到了

akDaxkbD(modpD)\frac{a^k}{D} \cdot a^{x-k} \equiv \frac{b}{D} \pmod{ \frac{p}{D} }

因为 apDa \perp \frac{p}{D} ,所以 akpDa^k \perp \frac{p}{D} ,现在就是一个普通的BSGS问题了,求解 xkx-k 再加上 kk 即原方程的解。

不排除解小于等于 kk 的情况,这时候只要 O(k)O(k) 枚举验证一下即可。

杜教筛

用来快速求积性函数前缀和。

设给定的积性函数为 f(n)f(n) ,所以我们设 S(n)S(n)ff 函数的前缀和

S(n)=i=1nf(i)S(n) = \sum _{i=1} ^{n} f(i)

现在的目标就是求出 S(n)S(n) 的值

考虑构造一个合适的积性函数 g(n)g(n) ,然后求他们卷积 h(n)h(n) 的前缀和

i=1nh(i)=i=1n(fg)(i)\sum _{i=1} ^{n} h(i) = \sum _{i=1} ^{n} (f \ast g)(i)

由卷积定义得

i=1nh(i)=i=1ndif(id)g(d)\sum _{i=1} ^{n} h(i) = \sum _{i=1} ^{n} \sum _{d|i} f(\frac{i}{d}) g(d)

ddg(d)g(d) 提到前面

i=1nh(i)=d=1ng(d)i=1ndf(i)\sum _{i=1} ^{n} h(i) = \sum _{d=1} ^{n} g(d) \sum _{i=1} ^{\lfloor \frac{n}{d} \rfloor} f(i)

后面那个求和就是 ff 的前缀和

i=1nh(i)=d=1ng(d)S(nd) \sum _{i=1} ^{n} h(i) = \sum _{d=1} ^{n} g(d) S(\lfloor \frac{n}{d} \rfloor)

因为我们求解的是 S(n)S(n) ,所以将 d=1d=1d>1d>1 分开计算

i=1nh(i)=g(1)S(n)+d=2ng(d)S(nd) \sum _{i=1} ^{n} h(i) = g(1)S(n) + \sum _{d=2} ^{n} g(d) S(\lfloor \frac{n}{d} \rfloor)

其中 gg 是积性函数,所以 g(1)=1g(1) = 1 ,移项得

S(n)=i=1nh(i)d=2ng(d)S(nd) S(n) = \sum _{i=1} ^{n} h(i) - \sum _{d=2} ^{n} g(d) S(\lfloor \frac{n}{d} \rfloor)

如果我们可以快速求出 h(i)h(i)g(n)g(n) 的前缀和,那么问题就可以用整除分块+递归求解了。

常见的积性函数

积性函数: φ\operatorname{\varphi},μ\mu,σ\sigma,d\operatorname{d}

完全积性函数: ε\operatorname{\varepsilon},I\operatorname{I},id\operatorname{id}

其中

ε(n)=[n=1]I(n)=1idk(n)=nkσk(n)=dndk\begin{aligned} & \operatorname{\varepsilon(n)} = [n=1] \\ & \operatorname{I}(n) = 1 \\ & \operatorname{id_k}(n) = n^k \\ & \sigma _k (n) = \sum _{d|n} d^k \end{aligned}

一些常用的卷积性质

μI=εφI=id1μid1=φ\begin{aligned} & \mu \ast \operatorname{I} = \operatorname{\varepsilon} \\ & \operatorname{\varphi} \ast \operatorname{I} = \operatorname{id_1} \\ & \mu \ast \operatorname{id_1} = \operatorname{\varphi} \end{aligned}

Min_25筛

求积性函数 f(x)f(x) 前缀和,其中 f(pk),pPrimef(p^k), p \in Prime 可快速求出。

下面式子中设 pp 为一个质数, pxp_x 为第 xx 个质数

一、设完全积性函数 g(x)g(x) ,且 g(p)=f(p),pPrimeg(p) = f(p), p \in Prime

二、设 G(n,x)G(n,x)[1,n][1,n] 中质数或最小质因子大于等于 pxp_x 的和数的 gg 值的和,所以有递推式:

G(n,x+1)=G(n,x)g(px)(G(npx,x)pPrimeppx1g(p)) G(n,x+1) = G(n,x) - g(p_x) \left( G(\lfloor \frac{n}{p_x}, x \rfloor) - \sum _{p \in Prime} ^{p \le p_{x-1}} g(p) \right)

三、设 S(n,x)S(n,x)[1,n][1,n] 中最小质因子大于等于 pxp_x 的合数的 ff 值的和, tottot[1,n][1,n] 中质数的个数,递推式:

S(n,x)=S(n,x+1)+i=1pxi+1n(f(pxi+1)+f(pxi)(G(npxi,tot+1)pPrimeppxf(p)+S(npxi,x+1))) S(n,x) = S(n,x+1) + \sum _{i=1} ^{p_x^{i+1} \le n} \left( f(p_x^{i+1}) + f(p_x^i) \cdot \left( G(\lfloor \frac{n}{p_x^i} \rfloor, tot+1) - \sum _{p \in Prime} ^{p \le p_{x}} f(p) + S(\lfloor \frac{n}{p_x^i} \rfloor, x+1) \right) \right)

类欧几里得算法

用来求一些奇奇怪怪的式子

f(a,b,c,n)=i=0nai+bcg(a,b,c,n)=i=0nai+bcih(a,b,c,n)=i=0nai+bc2\begin{aligned} & f(a,b,c,n) = \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor \\ & g(a,b,c,n) = \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor i \\ & h(a,b,c,n) = \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor ^2 \end{aligned}

无特殊说明,以下数学公式中以 %\% 代替 mod\bmod

函数 f(a,b,c,n)

分两种情况:

ac or bca \ge c \space or \space b \ge c 时:

f(a,b,c,n)=i=0n(a/cca%c)i+(b/ccb%c)c=i=0n(a/ci+b/c)+i=0n(a%c)i+(b%c)c=(n+1)(n+2)2a/c+(n+1)b/c+f(a%c,b%c,c,n)\begin{aligned} f(a,b,c,n) & = \sum _{i=0} ^{n} \small\left\lfloor \frac { (\lfloor a/c \rfloor c - a\%c)i + (\lfloor b/c \rfloor c - b\%c) } {c} \right\rfloor \\ & = \sum _{i=0} ^{n} \left( \lfloor a/c \rfloor i + \lfloor b/c \rfloor \right) + \sum _{i=0} ^{n} \left\lfloor \frac{ (a\%c)i + (b\%c) }{c} \right\rfloor \\ & = \frac{(n+1)(n+2)}{2} \lfloor a/c \rfloor + (n+1) \lfloor b/c \rfloor + f(a\%c, b\%c, c, n) \end{aligned}

这样我们就能把 aabb 缩小范围了。

a<c and b<ca < c \space and \space b < c 时:

f(a,b,c,n)=i=0nj=0ai+bc1=i=0nj=0an+bc[j<ai+bc]\begin{aligned} f(a,b,c,n) & = \sum _{i=0} ^{n} \sum _{j=0} ^{ \lfloor \frac{ai+b}{c} \rfloor } 1 \\ & = \sum _{i=0} ^{n} \sum _{j=0} ^{ \lfloor \frac{an+b}{c} \rfloor } \left[ j < \left\lfloor \frac{ai+b}{c} \right\rfloor \right] \\ \end{aligned}

m=an+bcm = \lfloor \frac{an+b}{c} \rfloor , 所以有

f(a,b,c,d)=i=0nj=0m1[j+1ai+bc]=i=0nj=0m1[cj+cbai]=i=0nj=0m1[cj+cb1a<i]=j=0m1i=0n[i>cj+cb1a]=j=0m1(ncj+cb1a)=mni=0m1cj+cb1a=mnf(c,cb1,a,m1)\begin{aligned} f(a,b,c,d) & = \sum _{i=0} ^{n} \sum _{j=0} ^{m-1} \left[ j+1 \le \frac{ai+b}{c} \right] \\ & = \sum _{i=0} ^{n} \sum _{j=0} ^{m-1} \left[ \frac{cj+c-b}{a} \le i \right] \\ & = \sum _{i=0} ^{n} \sum _{j=0} ^{m-1} \left[ \frac{cj+c-b-1}{a} < i \right] \\ & = \sum _{j=0} ^{m-1} \sum _{i=0} ^{n} \left[ i > \frac{cj+c-b-1}{a} \right] \\ & = \sum _{j=0} ^{m-1} \left( n - \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor \right) \\ & = mn - \sum _{i=0} ^{m-1} \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor \\ & = mn - f(c,c-b-1,a,m-1) \end{aligned}

所以我们得到了 ff 的递归解法,递归过程就像是欧几里得算法求 gcd\gcd 一样,所以是类欧几里得算法

f(a,b,c,n)={n(n+1)2a/c+(n+1)b/c+f(a%c,b%c,c,n),ac or bcmnf(c,cb1,a,m1),a<c and b<c\begin{aligned} f(a,b,c,n) = \begin{cases} \frac{n(n+1)}{2} \lfloor a/c \rfloor + (n+1) \lfloor b/c \rfloor + f(a\%c, b\%c, c, n) & , a \ge c \space or \space b \ge c \\ mn - f(c,c-b-1,a,m-1) & , a < c \space and \space b < c \end{cases} \end{aligned}

函数 g(a,b,c,n)

还是相同的分情况方法:

a>c or b>ca > c \space or \space b > c 时:

g(a,b,c,n)=i=0n(a/cc+a%c)i+(b/cc+b%c)ci=i=0na/ci2+i=0nb/ci+i=0n(a%c)i+b%cci=n(n+1)(2n+1)6a/c+n(n+1)2b/c+g(a%c,b%c,c,n)\begin{aligned} g(a,b,c,n) & = \sum _{i=0} ^n \left\lfloor \frac{ (\lfloor a/c \rfloor c + a\%c)i + (\lfloor b/c \rfloor c + b\%c) }{c} \right\rfloor i \\ & = \sum _{i=0} ^n \lfloor a/c \rfloor i^2 + \sum _{i=0} ^n \lfloor b/c \rfloor i + \sum _{i=0} ^n \left\lfloor \frac{(a\%c)i + b\%c}{c} \right\rfloor i \\ & = \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor + \frac{n(n+1)}{2} \lfloor b/c \rfloor + g(a\%c, b\%c, c, n) \end{aligned}

a<c and b<ca<c \space and \space b<c 时:

g(a,b,c,d)=i=0nij=0m[j<ai+bc]=i=0nij=0m1[j+1ai+bc]=i=0nij=0m1[cj+cbai]=i=0nij=0m1[cj+cb1a<i]\begin{aligned} g(a,b,c,d) & = \sum _{i=0} ^n i \sum _{j=0} ^m \left[ j < \lfloor \frac{ai+b}{c} \rfloor \right] \\ & = \sum _{i=0} ^n i \sum _{j=0} ^{m-1} \left[ j+1 \le \frac{ai+b}{c} \right] \\ & = \sum _{i=0} ^n i \sum _{j=0} ^{m-1} \left[ \frac{cj+c-b}{a} \le i \right] \\ & = \sum _{i=0} ^n i \sum _{j=0} ^{m-1} \left[ \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor < i \right] \end{aligned}

A=cj+cb1aA = \lfloor \frac{cj+c-b-1}{a} \rfloor ,则

g(a,b,c,d)=i=0nij=0m1[i>A]=j=0m1i=0ni[i>A]=j=0m1i=A+1n=12j=0m1(n+A+1)(nA)=12j=0m1(n2+nA2A)=12(n2m+nmj=0m1cj+cb1a2j=0m1cj+cb1a)=12(n(n+1)mh(c,cb1,a,m1)f(c,cb1,a,m1))\begin{aligned} g(a,b,c,d) & = \sum _{i=0} ^n i \sum _{j=0} ^{m-1} [ i > A ] \\ & = \sum _{j=0} ^{m-1} \sum _{i=0} ^n i [i > A] \\ & = \sum _{j=0} ^{m-1} \sum _{i=A+1} ^{n} \\ & = \frac{1}{2} \sum _{j=0} ^{m-1} (n+A+1)(n-A) \\ & = \frac{1}{2} \sum _{j=0} ^{m-1} (n^2 + n - A^2 - A) \\ & = \frac{1}{2} \left( n^2 m + nm - \sum _{j=0} ^{m-1} \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor ^2 - \sum _{j=0} ^{m-1} \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor \right) \\ & = \frac{1}{2} \left( n(n+1)m - h(c,c-b-1,a,m-1) - f(c,c-b-1,a,m-1) \right) \end{aligned}

所以

g(a,b,c,n)={n(n+1)(2n+1)6a/c+n(n+1)2b/c+g(a%c,b%c,c,n),a>c or b>c12(n(n+1)mh(c,cb1,a,m1)f(c,cb1,a,m1)),a<c and b<c\begin{aligned} g(a,b,c,n) = \begin{cases} \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor + \frac{n(n+1)}{2} \lfloor b/c \rfloor + g(a\%c, b\%c, c, n) & , a > c \space or \space b > c \\ \frac{1}{2} \left( n(n+1)m - h(c,c-b-1,a,m-1) - f(c,c-b-1,a,m-1) \right) & , a < c \space and \space b < c \end{cases} \end{aligned}

函数 h(a,b,c,n)

仍然分两种情况:

a>c or b>ca > c \space or \space b > c 时:

h(a,b,c,n)=i=0nai+bc2=i=0na/cci+b/ccc+(a%c)i+(b%c)c2=i=0n(a/ci+b/c+(a%c)i+(b%c)c)2\begin{aligned} h(a,b,c,n) & = \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor ^2 \\ & = \sum _{i=0} ^n \left\lfloor \frac{\lfloor a/c \rfloor ci + \lfloor b/c \rfloor c }{c} + \frac{(a\%c)i + (b\%c)}{c} \right\rfloor ^2 \\ & = \sum _{i=0} ^n \left( \lfloor a/c \rfloor i + \lfloor b/c \rfloor + \left\lfloor \frac{(a\%c)i + (b\%c)}{c} \right\rfloor \right) ^2 \end{aligned}

A=a/ci+b/cA = \lfloor a/c \rfloor i + \lfloor b/c \rfloor,B=(a%c)i+(b%c)cB = \left\lfloor \frac{(a\%c)i + (b\%c)}{c} \right\rfloor , 所以

h(a,b,c,n)=i=0n(A+B)2=i=0n(A2+2AB+B2)=i=0nA2+2i=0nAB+i=0nB2i=0nA2=i=0n(a/ci+b/c)2=i=0na/c2i2+2i=0na/cb/ci+i=0nb/c2=n(n+1)(2n+1)6a/c2+n(n+1)a/cb/c+(n+1)b/c22i=0nAB=2i=0n(a/ci+b/c)(a%c)i+(b%c)c=2i=0na/ci(a%c)i+(b%c)c+2i=0nb/c(a%c)i+(b%c)c=2a/cg(a%c,b%c,c,n)+2b/cf(a%c,b%c,c,n)i=0nB2=h(a%c,b%c,c,n)h(a,b,c,n)=n(n+1)(2n+1)6a/c2+n(n+1)a/cb/c+(n+1)b/c2+2a/cg(a%c,b%c,c,n)+2b/cf(a%c,b%c,c,n)+h(a%c,b%c,c,n)\begin{aligned} h(a,b,c,n) & = \sum _{i=0} ^n \left( A+B \right) ^2 \\ & = \sum _{i=0} ^n \left( A^2 + 2AB + B^2 \right) \\ & = \sum _{i=0} ^n A^2 + 2 \sum _{i=0} ^n AB + \sum _{i=0} ^n B^2 \\ \sum _{i=0} ^n A^2 & = \sum _{i=0} ^{n} \left( \lfloor a/c \rfloor i + \lfloor b/c \rfloor \right) ^2 \\ & = \sum _{i=0} ^n \lfloor a/c \rfloor ^2 i^2 + 2 \sum _{i=0} ^n \lfloor a/c \rfloor \lfloor b/c \rfloor i + \sum _{i=0} ^n \lfloor b/c \rfloor ^2 \\ & = \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor ^2 + n(n+1) \lfloor a/c \rfloor \lfloor b/c \rfloor + (n+1) \lfloor b/c \rfloor ^2 \\ 2 \sum _{i=0} ^n AB & = 2 \sum _{i=0} ^n \left( \lfloor a/c \rfloor i + \lfloor b/c \rfloor \right) \left\lfloor \frac{(a\%c)i + (b\%c)}{c} \right\rfloor \\ & = 2 \sum _{i=0} ^n \lfloor a/c \rfloor i \left\lfloor \frac{(a\%c)i+(b\%c)}{c} \right\rfloor + 2 \sum _{i=0} ^n \lfloor b/c \rfloor \left\lfloor \frac{(a\%c)i+(b\%c)}{c} \right\rfloor \\ & = 2 \lfloor a/c \rfloor g(a\%c, b\%c, c, n) + 2 \lfloor b/c \rfloor f(a\%c, b\%c, c, n) \\ \sum _{i=0} ^n B^2 & = h(a\%c, b\%c, c, n) \\ h(a,b,c,n) & = \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor ^2 + n(n+1) \lfloor a/c \rfloor \lfloor b/c \rfloor + (n+1) \lfloor b/c \rfloor ^2 + 2 \lfloor a/c \rfloor g(a\%c, b\%c, c, n) + 2 \lfloor b/c \rfloor f(a\%c, b\%c, c, n) + h(a\%c, b\%c, c, n) \end{aligned}

a<c and b<ca < c \space and \space b < c 时:

h(a,b,c,n)=i=0nai+bc2=i=0n(2j=1ai+bcj+ai+bc)=2i=0nj=1ai+bcj+i=0nai+bc=2i=0nj=0m1(j+1)[j<ai+bc]f(a,b,c,n)=2i=0nj=0m1(j+1)[cj+cb1a<i]f(a,b,c,n)=2j=0m1(j+1)i=0n[i>cj+cb1a]f(a,b,c,n)=2j=0m1(j+1)(ncj+cb1a)f(a,b,c,n)=2nj=0m1(j+1)2j=0m1jcj+cb1a2j=0m1cj+cb1af(a,b,c,n)=nm(m+1)2g(c,cb1,a,n)2f(c,cb1,a,n)f(a,b,c,n)\begin{aligned} h(a,b,c,n) & = \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor ^2 \\ & = \sum _{i=0} ^n \left( 2 \sum _{j=1} ^{ \lfloor \frac{ai+b}{c} \rfloor } j + \left\lfloor \frac{ai+b}{c} \right\rfloor \right) \\ & = 2 \sum _{i=0} ^n \sum _{j=1} ^{ \lfloor \frac{ai+b}{c} \rfloor } j + \sum _{i=0} ^n \left\lfloor \frac{ai+b}{c} \right\rfloor \\ & = 2 \sum _{i=0} ^n \sum _{j=0} ^{m-1} (j+1) \left[ j < \left\lfloor \frac{ai+b}{c} \right\rfloor \right] - f(a,b,c,n) \\ & = 2 \sum _{i=0} ^n \sum _{j=0} ^{m-1} (j+1) \left[ \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor < i \right] - f(a,b,c,n) \\ & = 2 \sum _{j=0} ^{m-1} (j+1) \sum _{i=0} ^n \left[ i > \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor \right] - f(a,b,c,n) \\ & = 2 \sum _{j=0} ^{m-1} (j+1) \left( n - \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor \right) - f(a,b,c,n) \\ & = 2n \sum _{j=0} ^{m-1} (j+1) - 2 \sum _{j=0} ^{m-1} j \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor - 2 \sum _{j=0} ^{m-1} \left\lfloor \frac{cj+c-b-1}{a} \right\rfloor - f(a,b,c,n) \\ & = nm(m+1) - 2g(c, c-b-1, a, n) - 2f(c, c-b-1, a, n) - f(a, b, c, n) \end{aligned}

所以

h(a,b,c,n)={n(n+1)(2n+1)6a/c2+n(n+1)a/cb/c+(n+1)b/c2+2a/cg(a%c,b%c,c,n)+2b/cf(a%c,b%c,c,n)+h(a%c,b%c,c,n),a>c or b>cnm(m+1)2g(c,cb1,a,n)2f(c,cb1,a,n)f(a,b,c,n),a<c and b<c\begin{aligned} h(a,b,c,n) = \begin{cases} \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor ^2 + n(n+1) \lfloor a/c \rfloor \lfloor b/c \rfloor + (n+1) \lfloor b/c \rfloor ^2 + 2 \lfloor a/c \rfloor g(a\%c, b\%c, c, n) + 2 \lfloor b/c \rfloor f(a\%c, b\%c, c, n) + h(a\%c, b\%c, c, n) & , a > c \space or \space b > c \\ nm(m+1) - 2g(c, c-b-1, a, n) - 2f(c, c-b-1, a, n) - f(a, b, c, n) & , a < c \space and \space b < c \end{cases} \end{aligned}

生成函数

普通生成函数(OGF)

对于一个序列 aa ,它的普通生成函数定义为形式幂级数: F(x)=iaixiF(x) = \sum _{i} a_i x^i

也就是将 aa 中每一项作为多项式的系数。

基本运算

设两个序列 a,ba,b 的生成函数分别为 F(x),G(x)F(x), G(x) ,则有

F(x)±G(x)=i(ai±bi)xiF(x) \pm G(x) = \sum _{i} (a_i \pm b_i)x^i

也就是序列 ai±bi\langle a_i \pm b_i \rangle 的生成函数为 F(x)±G(x)F(x) \pm G(x)

考虑乘法运算,也就是多项式卷积

F(x)G(x)=i(j=0iajbij)xiF(x)G(x) = \sum _i \left( \sum _{j=0} ^{i} a_j b_{i-j} \right) x^i

所以 _i=0na_ib_ni\langle \sum\limits \_{i=0} ^n a\_i b \_{n-i} \rangle 的生成函数就是 F(x)G(x)F(x)G(x)

封闭形式

形式幂级数的形式无法快速进行乘法运算,所以需要转化为封闭形式简化运算。

例如 1,1,\langle 1,1, \cdots \rangle 的普通生成函数为 F(x)=ixiF(x) = \sum _i x^i

可以发现 F(x)=xF(x)+1F(x) = xF(x) + 1 ,解方程得到 F(x)=11xF(x) = \large\frac{1}{1-x}

这就是函数 F(x)=ixiF(x) = \sum _i x^i 的封闭形式。

等比数列 1,p,p2,p3,\langle 1, p, p^2, p^3, \cdots \rangle 的生成函数 F(x)=ipixiF(x) = \sum _i p^i x^i , 有

F(x)=pxF(x)+1F(x)=11px\begin{aligned} & F(x) = pxF(x)+1 \\ & F(x) = \frac{1}{1-px} \end{aligned}

等比数列的封闭形式与展开形式之间的转化是常用的化简方法。

牛顿二项式定理

重新定义组合数:

Cnm=nmm!(nC,kn)C_n^m = \frac{n^{\underline{m}}}{m!} \quad (n \in \mathbf{C}, k \in \mathbf{n})

在这种情况下,对于 aCa \in \mathbf{C} ,二项式定理为

(x+1)a=i0Cai xi(x+1)^a = \sum _{i \ge 0} C_a^i \space x^i

这样我们就可以通过牛顿二项式定理由封闭形式求某一项的系数了。

指数型生成函数(EGF)

序列 aa 的指数生成函数定义为形式幂级数:

F^(x)=iaixii!\hat F(x) = \sum _i a_i \frac{x^i}{i!}

基本运算

加减法还是一样,就是系数相加。

乘法不太一样,对于两个序列 a,ba,b ,设它们的指数生成函数分别为 F^(x)G^(x)\hat F(x) \hat G(x) ,则

F(x)G(x)=i0aixii!j0bjxjj!=n0inj=0naibni1i!(ni)!=n0xnn!i=0nCniaibni\begin{aligned} F(x)G(x) & = \sum _{i \ge 0} a_i \frac{x^i}{i!} \sum _{j \ge 0} b_j \frac{x^j}{j!} \\ & = \sum _{n \ge 0} i^n \sum _{j=0} ^n a_i b_{n-i} \frac{1}{i!(n-i)!} \\ & = \sum _{n \ge 0} \frac{x^n}{n!} \sum _{i=0} ^n C_n^i a_i b_{n-i} \end{aligned}

所以序列 _i=0nC_nia_ib_ni\langle \sum \_{i=0} ^{n} C\_n^i a\_i b\_{n-i} \rangle的指数生成函数为F^(x)G^(x)\hat F(x) \hat G(x)

封闭形式

同样考虑封闭形式简化运算。

序列 1,1,\langle 1, 1, \cdots \rangle 的指数生成函数是 n0xnn!=ex\sum _{n \ge 0} \frac{x^n}{n!} = e^x

类似地,等比数列 1,p,p2,\langle 1, p, p^2, \cdots \rangle 的指数生成函数是 _n0pnxnn!=epx\sum \_{n \ge 0} \frac{p^n x^n}{n!} = e^{px}