一些OI中NOIp范围内的数学知识(中间差分序列、插值部分有点掉线啊...)

一、数论相关

gcd的一些性质

  1. gcd(xa1,xb1)=xgcd(a,b)1\gcd(x^a-1, x^b-1) = x^{\gcd(a, b)} - 1
  2. gcd(fiba,fibb)=fibgcd(a,b)\gcd(fib_a, fib_b) = fib_{\gcd(a, b)}

    事实上第二个性质只要形如fi=afi1+bfi2f_i = af_{i-1} + bf_{i-2}(a,ba,b互质)这样的递推式就成立

欧拉定理

gcd(a,p)=1gcd(a,p)=1则有aφ(p)1(mod p) a^{\varphi(p)} \equiv 1 (mod~p)

拓展(一般情况):

atamin(t,t mod φ(p)+φ(p))(mod p) a^{t} \equiv a^{\min(t,\, t ~mod~ \varphi(p) + \varphi(p))} (mod~p)

同余方程

形如:xai(mod pi)x \equiv a_i (mod~{p_i})

  • 中国剩余定理:

    pip_i两两互质,存在通解xx:

    P=ipiPi=PpiTi=Pi1 mod pixiaiTiPi(mod P) \begin{aligned} P &= \prod_{i} p_i \\ \\ P_i &= \frac{P}{p_i} \\ \\ T_i &= P_i^{-1} ~mod~p_i \\ \\ x &\equiv \sum_{i} a_iT_iP_i (mod~P) \end{aligned}
  • 拓展形式(合并线性同余方程):xa1(mod p1)xa2(mod p2)x=a1+k1p1=a2+k2p2 \begin{aligned} x &\equiv a_1 (mod~{p_1}) \\ x &\equiv a_2 (mod~{p_2}) \\ x &= a_1 + k_1p_1 = a_2 + k_2p_2 \\ \end{aligned} t=gcd(p1,p2)t=gcd(p_1,p_2),则:a1+k1p1tt=a2+k2p2ttk1p1ta2a1t(mod p2t)k1a2a1t×(p1t)1(mod p2t)xa1+p1(a2a1t×(p1t)1 mod p2t)(mod p1p2t) \begin{aligned} a_1 + k_1\frac{p_1}{t}t& = a_2 + k_2\frac{p_2}{t}t \\ k_1\frac{p_1}{t}&\equiv \frac{a_2 - a_1}{t} (mod~{\frac{p_2}{t}})\\ k_1 &\equiv \frac{a_2 - a_1}{t} \times (\frac{p_1}{t})^{-1} (mod~{\frac{p_2}{t}}) \\ x &\equiv a_1 + p_1 \left(\frac{a_2 - a_1}{t} \times (\frac{p_1}{t})^{-1}~mod~ \frac{p_2}{t} \right) (mod~{\frac{p_1p_2}{t}}) \end{aligned}

二、积性函数

基础知识

n=p1e1p2e2...pkekn=p_1^{e_1}p_2^{e_2}...p_k^{e_k}

ϵ(n)=[n=1]\epsilon(n) = [n = 1]

1(n)=1\mathrm{1}(n) = 1

Id(n)=n\mathrm{Id}(n) = n

μ(n)=[max(e1,e2,,ek)1](1)k\mu(n) = [\max(e_1, e_2, \cdots, e_k) \le 1] (-1)^k

φ(n)=ni=1k(11pi)\varphi(n) = n\prod_{i=1}^{k} (1 - \frac{1}{p_i})

d(n)=dn1\mathrm{d}(n) = \sum_{d|n} 1 约数个数

σ(n)=dnd\sigma(n) = \sum_{d|n} d 约数和

λ(n)=(1)k\lambda(n) = (-1)^k 刘维尔函数(μ\mu是一种特殊的刘维尔函数) 可做容斥

Dirichlet卷积

(fg)(n)=dnf(d)g(nd)(f*g)(n) = \sum_{d|n} f(d) g(\frac{n}{d})

μ1=ϵ\mu * 1 = \epsilon

Id=φ1φ=Idμ\mathrm{Id} = \varphi * 1 \Rightarrow \varphi = \mathrm{Id} * \mu

d=111=μd\mathrm{d} = 1 * 1 \Rightarrow 1 = \mu * \mathrm{d}

σ=Id1Id=μσσ=φd\sigma = \mathrm{Id} * 1 \Rightarrow \mathrm{Id} = \mu * \sigma \Rightarrow \sigma = \varphi * \mathrm{d}

这三个右边的式子可以通过左边的式子两边同时卷上μ\mu得到(ϵ\epsilon卷任何函数等于其本身)

d(ij)=xiyj[gcd(x,y)=1]d(ij) = \sum_{x|i}\sum_{y|j} [\gcd(x, y) = 1]

σ(ij)=xiyj[gcd(x,y)=1]iyx\sigma(ij) = \sum_{x|i}\sum_{y|j} [\gcd(x, y) = 1] \frac{iy}{x}

满足交换律, 结合律, 两个积性函数的卷积也是积性的

三、组合数学

Lucas定理

(nm)=(npmp)×(n mod pm mod p) (mod p)  p is prime {n\choose m} = {\lfloor\frac{n}{p}\rfloor\choose \lfloor\frac{m}{p}\rfloor} \times {n~mod~p\choose m~mod~p}~(mod~ p)~|~p~is~prime

基本组合恒等式

i=0n(ni)=2ni=0n(ix)=(n+1x+1)i=0n(k+ii)=(k+n+1n)i=0m(mi)(nmmi)=(nm) \begin{aligned} & \sum_{i=0}^{n} {n \choose i} = 2 ^ n \\ & \sum_{i=0}^{n} {i \choose x} = {n+1 \choose x+1} \\ & \sum_{i=0}^{n} {k+i \choose i} = {k+n+1 \choose n} \\ & \sum_{i=0}^{m} {m \choose i} {n-m \choose m-i} = {n \choose m} \end{aligned}

四、Stirling数

第一类Stirling数

  1. 定义: [nm]\begin{bmatrix} n \\ m \end{bmatrix} 表示将nn 个物品分为 mm 个无序非空环的方案数.
  2. 递推式:
[nm]=[n1m1]+(n1)[n1m]\begin{bmatrix} n \\ m \end{bmatrix} = \begin{bmatrix} n-1 \\ m-1 \end{bmatrix} + (n-1)\begin{bmatrix} n-1 \\ m \end{bmatrix}
  1. 生成函数:xn=i=0n[ni]xixn=i=0n(1)ni[ni]xi \begin{aligned} & x^{\overline{n}} = \sum_{i=0}^{n} \begin{bmatrix} n \\ i \end{bmatrix} x^i \\ & x^{\underline{n}}= \sum_{i=0}^{n} (-1)^{n-i} \begin{bmatrix} n \\ i \end{bmatrix} x^i \end{aligned}

第二类Stirling数

  1. 定义: {nm} \left\{ \begin{aligned} &n \\ &m \end{aligned} \right\} 表示将 nn个物品分成 mm 个无序非空集合的方案数.

  2. 递推式:

    {nm}={n1m1}+m{n1m} \left\{ \begin{aligned} &n \\ &m \end{aligned} \right\} = \left\{ \begin{aligned} &n-1 \\ &m-1 \end{aligned} \right\} + m\left\{ \begin{aligned} n&-1 \\ &m \end{aligned} \right\}
  3. 生成函数:

    xn=i=0n{ni}xim!{nm}=i=0m(1)mi(mi)in \begin{aligned} & x^n = \sum_{i=0}^{n} \left\{ \begin{aligned} &n \\ &i \end{aligned} \right\} x^{\underline{i}} \\ & m!\left\{ \begin{aligned} &n \\ &m \end{aligned} \right\} = \sum_{i=0}^{m} (-1)^{m-i} {m \choose i} i^n \end{aligned}

五、差分序列

定义 Δkf(n)\Delta^{k} f(n)f(n)f(n)kk 阶差分序列, 并且:

Δkf(n)={f(n),k=0Δk1f(n+1)Δk1f(n),otherwise\Delta^{k} f(n) = \begin{cases} f(n), & \mathrm{k = 0} \\ \Delta^{k-1} f(n+1) - \Delta^{k-1} f(n), & \mathrm{otherwise} \end{cases}

容易发现差分序列的具有线性性, 特别地, 多项式:

f(x)={0,0,0,,1}x[0,n]f(x) = \{0, 0, 0, \cdots, 1\} \mid x \in [0, n]

它的差分序列长这样:

{0,0,0,0,,1}{0,0,0,,1}{0,0,,1}{0,,1}{}{1} \begin{aligned} \{&0,0,0,0,\cdot\cdot\cdot,1\}\\ \{&0,0,0,\cdot\cdot\cdot,1 \}\\ \{&0,0,\cdot\cdot\cdot,1 \}\\ \{&0,\cdot\cdot\cdot,1 \}\\ \{&\cdot\cdot\cdot\}\\ \{&1\} \end{aligned}

其第一列是 {0,0,0,,1}\{0, 0, 0, \cdots, 1\} , 事实上这个多项式就是

1n!i=0n1(xi)=(xn)\frac{1}{n!} \prod_{i=0}^{n-1} (x - i) = {x \choose n}

.

六、插值

已知一个 nn 次多项式的 n+1n+1 个点值, 求这个多项式的系数表示.

牛顿差值

求出多项式的 nn 阶差分序列第一列 {ci}\{c_i\}, 可以将多项式表示成:

f(x)=i=0nci(xi)f(x) = \sum_{i=0}^{n} c_i {x \choose i}

拉格朗日插值

考虑构造一个经过所有给定点的多项式:

gi(x)=j=0,jinxxjxixjf(x)=i=0nyigi(x) \begin{aligned} g_i(x) = \prod_{j=0, j \neq i}^{n} \frac{x - x_j}{x_i - x_j} \\ f(x) = \sum_{i=0}^{n} y_ig_i(x) \end{aligned}

七、自然数幂和

求:fk(n)=i=0nikf_k(n) = \sum_{i=0}^{n} i^k

Solution

直接用第二类斯特林数展开:

fk(n)=i=0nj=0k{kj}ij=j=0k{kj}j!i=0n(ij)=j=0k{kj}j!(n+1j+1) \begin{aligned} f_k(n) &= \sum_{i=0}^{n} \sum_{j=0}^{k} \left\{ \begin{aligned} &k \\ &j \end{aligned} \right\} i^{\underline{j}} \\ &= \sum_{j=0}^{k} \left\{ \begin{aligned} &k \\ &j\end{aligned} \right\} j! \sum_{i=0}^{n} {i \choose j} \\ &= \sum_{j=0}^{k} \left\{ \begin{aligned} &k\\ &j\end{aligned} \right\} j! {n + 1 \choose j + 1} \end{aligned}

这样的时间复杂度是O(k2)O(k^2)的,考虑继续优化

通过上一个方法我们知道 fk(n)f_k(n) 是一个关于 nnk+1k+1 次多项式, 于是直接拉格朗日插值即可, 并且由于系数的特殊性质, 可以做到 O(k)O(k).

八、容斥与反演

Min-Max容斥

max(S)=TS,T(1)T1min(T)\max(S) = \sum_{T \subseteq S, T \neq \varnothing} {(-1) ^ {|T|-1}} \min(T)

gcd-lcm容斥(Min-Max容斥的拓展)

lcm(S)=TS,Tgcd(T)(1)T1\mathrm{lcm}(S) = \prod_{T \subseteq S, T \neq \varnothing} \gcd(T) ^ {(-1) ^ {|T|-1}}

二项式反演

f(n)=i=0n(ni)g(i)g(n)=i=0n(1)ni(ni)f(i) \begin{aligned} f(n) &= \sum_{i=0}^{n} {n \choose i} g(i)\\ \Leftrightarrow g(n) &= \sum_{i=0}^{n} (-1)^{n-i} {n \choose i} f(i) \end{aligned}

Stirling反演

f(n)=i=0n{ni}g(i)g(n)=i=0n(1)ni[ni]f(i) \begin{aligned} f(n) &= \sum_{i=0}^{n} \left\{ \begin{aligned} &n \\ &i \end{aligned} \right\} g(i) \\ \Leftrightarrow g(n) &= \sum_{i=0}^{n} (-1)^{n-i} \begin{bmatrix} n \\ i \end{bmatrix} f(i) \end{aligned}

九、题目选讲

「BZOJ4833」

Description

已知:

f(n)={0,n=01,n=12f(n1)+f(n2),otherwiseg(n)=lcm(f(1),f(2),,f(n)) \begin{aligned} f(n) &= \begin{cases} 0, & {n = 0} \\ 1, & {n = 1} \\ 2f(n-1) + f(n-2), & {otherwise} \end{cases} \\ \\ g(n) &= \mathrm{lcm}(f(1), f(2), \cdots, f(n)) \end{aligned}

求:

i=1ng(i)×i\sum_{i=1}^{n} g(i) \times i

n106n \le 10^6

Solution

首先由前面提到关于gcd的结论,有 gcd(f(i),f(j))=f(gcd(i,j))\gcd(f(i), f(j)) = f(\gcd(i, j))

根据 Min-Max 容斥有:

g(n)=TS,Tgcd(T)(1)T+1=TS,Tf(gcd(T))(1)T+1 \begin{aligned} g(n) &= \prod_{T \subseteq S, T \neq \varnothing} \gcd(T)^{(-1)^{|T|+1}} \\ &= \prod_{T \subseteq S, T \neq \varnothing} f(\gcd(T))^{(-1)^{|T|+1}} \end{aligned}

构造hh满足f(n)=dnh(d)f(n) = \prod_{d|n} h(d),代入得到

g(n)=d=1nh(d)TS,T[dgcd(T)](1)T+1=d=1nh(d) \begin{aligned} g(n) &= \prod_{d=1}^{n} h(d)^{\sum_{T \subseteq S, T \neq \varnothing} [d \mid gcd(T)] (-1)^{|T|+1}} \\ &= \prod_{d=1}^{n} h(d) \end{aligned}

(最后这一步还是有点没想清楚,想通了再来填这个坑吧)

10.8 Update:

这个地方其实是因为所有含dd这个因子的数所构成的所有集合的gcd显然都是能被dd整除的,那么这些数构成的集合中,每个数都有选或不选两种方案,一种贡献是1,一种贡献是-1,但是因为TT不能为空集,因此要减去空集的贡献1-1,因此那个上面指数部分就是11

通过广义莫比乌斯反演可以得到:

h(n)=dnf(d)μ(nd) h(n)=\prod_{d|n}f(d)^{\mu(\frac{n}{d})}

总时间复杂度O(nlogn)O(n\log n)

剩下两道题还没看,坑待填