数学小结
欧几里得
网上欧几里得的证明似乎有点繁琐,所以自己手打一下。
\[(a,b)=(b,a\ mod\ b)\]
证明:
\(a \mod\ b = a-\lfloor \frac{a}{b} \rfloor \cdot b\) ,加减运算不会丢掉任何公约数。
扩展欧几里得
贝祖(裴蜀)定理
关于 \(x,y\) 的方程 \(ax+by = (x,y)\) 有解。推广到 \(n\) 元方程也成立。
要求:
\[ax+by = (x,y)\]
迭代一次之后是求:
\[bx'+\left(a-\lfloor \frac{a}{b} \rfloor \cdot b \right)y' = (x,y)\]
移项得:
\[ay'+b \cdot (x'-\lfloor \frac{a}{b} \rfloor \cdot y') = (x,y)\]
由这个式子与原式的关系得:
\[x=y',y=x'-\lfloor \frac{a}{b} \rfloor \cdot y'\]
中国剩余定理
扩展中国剩余定理
BSGS
扩展 BSGS
多项式
前置知识
高斯消元
其他
- 数论阶
- 原根
- 完全剩余系 & 简化剩余系
- 复数(选修 2-2 )
- 导数(选修 2-2 )
- 微积分(选修 2-2 )
矩阵
- 卷积
- 矩阵乘法
- 行列式(性质、用高斯消元计算行列式)
- Vandermonde 矩阵的性质(计算行列式)
- Laplace expansion(计算行列式)
- 特征多项式
- 秩、子式、(代数)余子式
快速傅里叶变换 & 快速数论变换
系数表示法卷积时间复杂度太高,所以傅里叶变换成点值表示法,卷积之后再逆变换回系数表示法。 \(O(\log n)\) 。
两者都利用了不同自变量的函数值之间有简单关系来减少计算量。
FFT 的不同自变量是复数 \(e^{\frac{2\pi}{n}i}\) 。注意 \(e^{\theta i} = \cos \theta + i \cdot \sin \theta\) ,把 \(e^x,\sin,\cos\) 分别泰勒展开就可以证明。
NTT 的不同自变量是原根 \(g\) 的若干次幂,它们恰好构成一个完系。
如何找原根呢?
当然是背下来几个常用的啊。
不过一定找 \(x\) 的原根也有方法。只有 \(2,4,p^n,2p^n\) (\(p\) 是素数)有原根,并且数量是 \(\phi(\phi(x))\) 。枚举 \(g|phi(x)\) 即可。
据说还有这样一个结论,假设唯一分解 \(\phi(x)=t_1^{k_1} \cdot t_2^{k_2} \cdots t_n^{k_n}\) ,则枚举 \(\frac{\phi(x)}{t_i}\) 即可(而非 \(\phi(x)\) 的所有约数)。