个人 & ZR 数论专题小记
我的数论以前一只因为对数字的恐惧而搁置,准备这几天补回来 /kk。
主要是记结论和重要的内容。
exgcd&中国剩余定理&ex中国剩余定理
exgcd
求解 \(ax+by=c\) 的通解形式。
根据贝祖定理,有 \(\mathrm{gcd}(a,b)|c\),因此我们可以先求出 \(ax+by=gcd(a,b)\) 的解,然后乘相应倍数就可以得到原方程的解。这里倍数是 \(\frac{c}{\mathrm{gcd}(a,b)}\)。
先思考怎么求特解。
考虑类似辗转相除的方法来做,假设得到了 \(a'=b,b'=a\ \mathrm{mod}\ b\) 的解 \(x',y'\),如何得到 \(a,b\) 的解。假设 \(a=kb+r\),则 \(b'=r\) 也就是说现在有 \(b,r\) 的解 \(x',y'\)。把式子写下来就是 \(bx'+ry'=\mathrm{gcd}(a,b)=bx'+(a-kb)y'=ay'+b(x'-ky')\)。于是就有 \(a,b\) 的两个解是 \(y',x'-ky'\)。边界是 \(b=0\) 时 \(\mathrm{gcd}\) 为 \(a\),令 \(x=1,y=0\) 即可。
这样就有了一组题解 \(x,y\)。如何推广到通解?
我们考虑对这组通解 \(x,y\) 调整得到其它可能的解,假设 \(x\) 调整为了 \(x+k_1\),那么 \(y\) 如果要调整成 \(y-k_2\),就有 \(\frac{k_1}{k_2}=\frac{b}{a}\)。因此其实我们可以把通解形式写成 \(x_k=x+kb,y_k=y-ka\)。
实际做题的时候一般要求这里 \(x,y\) 为整数,简单分析一下可以得到 \(\mathrm{gcd}(a,b)k\) 为整数时能保证这一点。
中国剩余定理
有 \(n\) 个同余方程,要你求出解的同余形式。
考虑每次把一个方程保留,其它的把余数都置成 \(0\),求出通解形式的余数,把所有的这个余数相加就是原方程的余数。比如这个保留的方程是第一个 \(x\ \mathrm{mod}\ b_1=a_1\)。那么我们可以先 求 \(a_1\) 为 \(1\) 的情况,然后再乘上真正的 \(a_1\) 值。可以发现 \(x\) 因为其它置成 \(0\) 的方程的影响,它应该是 \(b_2b_3...b_n\) 的倍数,令它为 \(kb_2b_3...b_n\),则 \(kb_2b_3...b_n\ \mathrm{mod}\ b_1=1\),这是逆元形式,exgcd 即可。
ex中国剩余定理
做法挺多。记两个。
solution1
考虑只有两个方程怎么解,如果能做两个那么只要按顺序一个一个合并即可。
假设现在有 \(x \ \mathrm{mod}\ a=b,x\ \mathrm{mod}\ a'=b'\) 两个玩意,那么 \(x=-ak_1+b=-a'k_2+b'\),考察后面的等号,整理得 \(ak_1-a'k_2=b-b'\) ,可以用 exgcd 求的一组特解 \(x_0,y_0\),可以表示通解:\(x_k=x_0+\frac{a'}{\mathrm{gcd}(a,a')} \times k,y_k=y_0-\frac{a}{\mathrm{gcd}(a,a')} \times k\),代入原 \(x\) 的柿子可以得到 \(x=b-ax_k=b-ax_0-\mathrm{lcm}(a,a') \times k\),因此有 \(x \ \mathrm{mod}\ \mathrm{lca}(a,a')=b-ax_0\)。完成合并。
solution2
把所有余数 \(a\),把模数 \(b\) 分解成若干 \(p^k\) 乘积的形式(\(p\) 是素数),那么相当于对这些 \(p^k\) 分别取模得到 \(a\)。然而这样可能会有多个不同的 \(b\) 对应到一个 \(p\) 的底数,这样就不互质了,然而可以想到对于同样一个底数 \(p\) 只用保留 \(k\) 最大的条件。于是就做完了。
exlucas
宝宝不会捏 /kel。
狄利克雷卷积&莫比乌斯反演
基本的数轮函数运算:
\(f+g=t\),\(t(x)=f(x)+g(x)\)。
\(p*f=t\),\(t(x)=pf(x)\)
我们定义 狄利克雷卷积 这种运算是把两个数轮函数 \(f,g\) 卷成另一个函数 \(t\),其中 \(t\) 满足:
\(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ t(x)=\sum_{i|x}f(i)g(\frac{x}{i})\)。
我们也可以认为是对于每一对 \((i,j)\) 把 \(f(i)g(j)\) 贡献到 \(t(ij)\) 上去。
这一种卷积运算满足如下性质:
交换律,结合律,分配律,任意函数 \(f\) 乘上单位元函数等于 \(f\) 本身。
单位元函数 \(t(x)=[x==1]\)。
对于一个函数 \(f,f(1) \ne 0\)我们还可以求逆元函数 \(g\),满足 \(f*g\) 等于单位元函数。
两个积性函数的狄利克雷卷积是积性函数。
积性函数的逆是积性函数。
我们定义一个 "一函数":\(o,o(x)=1\),和它的逆函数 \(\mu\)。
对于函数 \(f\),构造 \(g=f*o\),则 \(f=f*o*\mu=g*\mu\)。我们把这个结果写开,转化就是:
\(g(n)=\sum_{d|n}f(d)\) 那么有 \(f(n)=\sum_{d|n}\mu(\frac{n}{d})g(d)\)。
把每个式子里 \(f,g\) 括号里面的 \(n,d\) 交换仍然成立。
我们如何应用呢?
比如说现在有这样一个问题:
求 \(\sum_{i=1}^n\sum_{j=1}^m [gcd(i,j)==1]\)。
我们令 \(f(x)=\sum_{i=1}^n\sum_{j=1}^m [gcd(i,j)==x],g(x)=\sum_{x|d}f(x)\)。
那么根据前面推出来的柿子得到 \(f(1)=\sum_{i=1}^n \mu(i)g(i)\)。
我们观察 \(g\) 的形式可以得到 \(g(x)=\lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{x} \rfloor\)。
整除分块即可。
\(\mu(x)\) 的值:
\(x=0 \to 1\)。
\(x=p_1p_2...p_m(p\ is\ prime,p_i \ne p_j) \to (-1)^m\)。
\(others \to 0\)。
另一个问题:
求 \(\sum_{i=1}^n\sum_{j=1}^m gcd(i,j)\)。
solution1:
转化成 \(\sum_{d} d\sum_{i=1}^{\frac{n}{d}} \sum_{j=1}^{\frac{m}{d}} [gcd(i,j)==1]\)。
变成了第一个问题。
注:上面涉及到的所有函数都是积性函数,可以直接线性筛。
ZR 数论
大招前摇
组合数学和容斥
组合数:\(n\) 个无顺序球里面选 \(m\) 个的方案数 \(C(n,m)=\frac{n!}{m!(n-m)!}\)。
常见问题的解题策略:插板,推柿子。
常见结论:
- \(C(n,m)=C(n-1,m-1)+C(n-1,m)\)。组合意义证明,考虑第 \(n\) 个选不选。
- 上指标前缀和:\(\sum_{i=0}^n C(i,m)=C(n+1,m+1)\)。组合意义证明,考虑最后一个选的在哪里。
- 范德蒙德卷积:\(\sum_{i=0} C(n,i)C(m,i)=C(n+m,n)\)。组合意义证明,把 \(C(m,i)\) 变换为 \(C(m,m-i)\)。
- Lucas 定理:\(C(n,m)\ \mathrm{mod}\ p=C(n\ \mathrm{mod}\ p,m\ \mathrm{mod}\ p)C(n/p,m/p) \ \mathrm{mod}\ p\)。可以发现这个是一个类似于 \(p\) 进制的结构,这个很有用,可以拿来做数位 dp。
概率期望
我感觉这里没啥收获,不记定义了。
这里有个例题,顺手写一下吧。
一个点初始在 \(0\),每次一半概率向右走 1 一半概率不动,问走到 \(n\) 的期望 time。考虑 \(f_n\) 表示 \(n\) 的答案就有 \(f_n=1+\frac{f_n+f_{n-1}}{2}\) 解得 \(f_n=2+f_{n-1}\),直接算即可。这里看出期望是线性的,\(E(X+Y)=E(X)+E(Y)\)。
P7481
对于这种奇奇怪怪的,没有什么对应好的组合意义的东西,可以考虑递推。柿子懒得写了,直接 LG 题解吧,这种推柿子题没啥好讲的。

浙公网安备 33010602011771号