From 371b9d805cf5ba815a9a76e924da1cf3e47e0c88 Mon Sep 17 00:00:00 2001 From: Ir1d Date: Sun, 14 Jul 2019 13:32:57 +0800 Subject: [PATCH] =?utf8?q?fix=20=E8=A1=8C=E9=97=B4=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../knuth-yao-quadrangle-inequality.md | 8 ++- docs/ds/stl/bitset.md | 4 +- docs/geometry/nearest-points.md | 14 +++-- docs/graph/matrix-tree.md | 12 +++-- docs/math/mobius.md | 4 +- docs/math/poly/div-mod.md | 14 +++-- docs/math/poly/intro.md | 32 +++++++---- docs/math/poly/inv-tri-func.md | 12 +++-- docs/math/poly/inv.md | 22 +++++--- docs/math/poly/lagrange-poly.md | 8 ++- docs/math/poly/ln-exp.md | 34 ++++++++---- docs/math/poly/multipoint-eval-interpolation.md | 52 +++++++++++++----- docs/math/poly/newton.md | 62 ++++++++++++++++------ docs/math/poly/sqrt.md | 14 +++-- docs/math/poly/tri-func.md | 12 +++-- docs/math/primitive-root.md | 4 +- 16 files changed, 223 insertions(+), 85 deletions(-) diff --git a/docs/dp/optimizations/knuth-yao-quadrangle-inequality.md b/docs/dp/optimizations/knuth-yao-quadrangle-inequality.md index b939613b..b561a606 100644 --- a/docs/dp/optimizations/knuth-yao-quadrangle-inequality.md +++ b/docs/dp/optimizations/knuth-yao-quadrangle-inequality.md @@ -148,7 +148,9 @@ $$ > **定理 2** 若函数 $w(l,r)$ 满足四边形不等式,记 $h_{l,r}=f_l+w(l,r)$ 表示从 $l$ 转移过来的状态 $r$,$k_{r}=\min\{l|f_{r}=h_{l,r}\}$ 表示最优决策点,则有 > -> $$ \forall r_1 \leq r_2:k_{r_1} \leq k_{r_2} $$ +> $$ +> \forall r_1 \leq r_2:k_{r_1} \leq k_{r_2} +> $$ 记 $l_1=k_{r_1},\ l_2=k_{r_2}$,若 $l_1>l_2$,则 $l_2多项式的对数函数与指数函数 对于一个多项式 $f(x)$,可以将其对数函数看作其与麦克劳林级数的复合: -$$ \ln{(1 - f(x))} = -\sum_{i = 1}^{+\infty} \frac{f^{i}(x)}{i} = \sum_{i = 1}^{+\infty} \frac{(-1)^{i - 1}f^{i}(x)}{i} $$ +$$ +\ln{(1 - f(x))} = -\sum_{i = 1}^{+\infty} \frac{f^{i}(x)}{i} = \sum_{i = 1}^{+\infty} \frac{(-1)^{i - 1}f^{i}(x)}{i} +$$ 其指数函数同样可以这样定义: -$$ \exp{f(x)} = e^{f(x)} = \sum_{i = 0}^{+\infty} \frac{f^{i}(x)}{i!} $$ +$$ +\exp{f(x)} = e^{f(x)} = \sum_{i = 0}^{+\infty} \frac{f^{i}(x)}{i!} +$$ ### 多项式的多点求值和插值 **多项式的多点求值(Multi-point evaluation)** 即给出一个多项式 $f(x)$ 和 $n$ 个点 $x_{1}, x_{2}, \dots, x_{n}$,求 -$$ f(x_{1}), f(x_{2}), \dots, f(x_{n}) $$ +$$ +f(x_{1}), f(x_{2}), \dots, f(x_{n}) +$$ **多项式的插值(Interpolation)** 即给出 $n + 1$ 个点 -$$(x_{0}, y_{0}), (x_{1}, y_{1}), \dots, (x_{n}, y_{n}) $$ +$$ +(x_{0}, y_{0}), (x_{1}, y_{1}), \dots, (x_{n}, y_{n}) +$$ 求一个 $n$ 次多项式 $f(x)$ 使得这 $n + 1$ 个点都在 $f(x)$ 上。 diff --git a/docs/math/poly/inv-tri-func.md b/docs/math/poly/inv-tri-func.md index f2d33150..5d07ff03 100644 --- a/docs/math/poly/inv-tri-func.md +++ b/docs/math/poly/inv-tri-func.md @@ -6,25 +6,29 @@ 仿照求多项式 $\ln$ 的方法,对反三角函数求导再积分可得: -$$ \begin{aligned} +$$ +\begin{aligned} \frac{\mathrm{d}}{\mathrm{d} x} \arcsin{x} &= \frac{1}{\sqrt{1 - x^{2}}} \\ \arcsin{x} &= \int \frac{1}{\sqrt{1 - x^{2}}} \mathrm{d} x \\ \frac{\mathrm{d}}{\mathrm{d} x} \arccos{x} &= - \frac{1}{\sqrt{1 - x^{2}}} \\ \arccos{x} &= - \int \frac{1}{\sqrt{1 - x^{2}}} \mathrm{d} x \\ \frac{\mathrm{d}}{\mathrm{d} x} \arctan{x} &= \frac{1}{1 + x^{2}} \\ \arctan{x} &= \int \frac{1}{1 + x^{2}} \mathrm{d} x -\end{aligned} $$ +\end{aligned} +$$ 那么代入 $f\left(x\right)$ 就有: -$$ \begin{aligned} +$$ +\begin{aligned} \frac{\mathrm{d}}{\mathrm{d} x} \arcsin{f\left(x\right)} &= \frac{f'\left(x\right)}{\sqrt{1 - f^{2}\left(x\right)}} \\ \arcsin{f\left(x\right)} &= \int \frac{f'\left(x\right)}{\sqrt{1 - f^{2}\left(x\right)}} \mathrm{d} x \\ \frac{\mathrm{d}}{\mathrm{d} x} \arccos{f\left(x\right)} &= - \frac{f'\left(x\right)}{\sqrt{1 - f^{2}\left(x\right)}} \\ \arccos{f\left(x\right)} &= - \int \frac{f'\left(x\right)}{\sqrt{1 - f^{2}\left(x\right)}} \mathrm{d} x \\ \frac{\mathrm{d}}{\mathrm{d} x} \arctan{f\left(x\right)} &= \frac{f'\left(x\right)}{1 + f^{2}\left(x\right)} \\ \arctan{f\left(x\right)} &= \int \frac{f'\left(x\right)}{1 + f^{2}\left(x\right)} \mathrm{d} x -\end{aligned} $$ +\end{aligned} +$$ 直接按式子求就可以了。 diff --git a/docs/math/poly/inv.md b/docs/math/poly/inv.md index 605b9061..193b25cd 100644 --- a/docs/math/poly/inv.md +++ b/docs/math/poly/inv.md @@ -8,30 +8,40 @@ 首先,易知 -$$\left[x^{0}\right]f^{-1}\left(x\right)=\left(\left[x^{0}\right]f\left(x\right)\right)^{-1}$$ +$$ +\left[x^{0}\right]f^{-1}\left(x\right)=\left(\left[x^{0}\right]f\left(x\right)\right)^{-1} +$$ 假设现在已经求出了 $f\left(x\right)$ 在模 $x^{\left\lceil\frac{n}{2}\right\rceil}$ 意义下的逆元 $f^{-1}_{0}\left(x\right)$。 有: -$$ \begin{aligned} +$$ +\begin{aligned} f\left(x\right)f^{-1}_{0}\left(x\right)&\equiv 1 &\pmod{x^{\left\lceil\frac{n}{2}\right\rceil}}\\ f\left(x\right)f^{-1}\left(x\right)&\equiv 1 &\pmod{x^{\left\lceil\frac{n}{2}\right\rceil}}\\ f^{-1}\left(x\right)-f^{-1}_{0}\left(x\right)&\equiv 0 &\pmod{x^{\left\lceil\frac{n}{2}\right\rceil}} -\end{aligned} $$ +\end{aligned} +$$ 两边平方可得: -$$f^{-2}\left(x\right)-2f^{-1}\left(x\right)f^{-1}_{0}\left(x\right)+f^{-2}_{0}\left(x\right)\equiv 0 \pmod{x^{n}}$$ +$$ +f^{-2}\left(x\right)-2f^{-1}\left(x\right)f^{-1}_{0}\left(x\right)+f^{-2}_{0}\left(x\right)\equiv 0 \pmod{x^{n}} +$$ 两边同乘 $f\left(x\right)$ 并移项可得: -$$f^{-1}\left(x\right)\equiv f^{-1}_{0}\left(x\right)\left(2-f\left(x\right)f^{-1}_{0}\left(x\right)\right) \pmod{x^{n}}$$ +$$ +f^{-1}\left(x\right)\equiv f^{-1}_{0}\left(x\right)\left(2-f\left(x\right)f^{-1}_{0}\left(x\right)\right) \pmod{x^{n}} +$$ 递归计算即可。 时间复杂度 -$$T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ +$$ +T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) +$$ ### Newton's Method diff --git a/docs/math/poly/lagrange-poly.md b/docs/math/poly/lagrange-poly.md index d53eefd6..b0443d7b 100644 --- a/docs/math/poly/lagrange-poly.md +++ b/docs/math/poly/lagrange-poly.md @@ -37,11 +37,15 @@ 公式整理得: -$$ f(x)=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{x-x_j}{x_i-x_j}) $$ +$$ +f(x)=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{x-x_j}{x_i-x_j}) +$$ 如果要将每一项都算出来,时间复杂度仍是 $O(n^2)$ 的,但是本题中只用求出 $f(k)$ 的值,所以只需将 $k$ 代入进式子里得: -$$ \mathrm{answer}=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j}) $$ +$$ +\mathrm{answer}=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j}) +$$ 本题中,还需要求解逆元。如果先分别计算出分子和分母,再将分子乘进分母的逆元,累加进最后的答案,时间复杂度的瓶颈就不会在求逆元上,时间复杂度为 $O(n^2)$ 。 diff --git a/docs/math/poly/ln-exp.md b/docs/math/poly/ln-exp.md index 59c10888..6ea6ba15 100644 --- a/docs/math/poly/ln-exp.md +++ b/docs/math/poly/ln-exp.md @@ -10,14 +10,18 @@ 首先,对于多项式 $f\left(x\right)$,若 $\ln{f\left(x\right)}$ 存在,则由其[定义](../#ln-exp),其必须满足: -$$\left[x^{0}\right]f\left(x\right)=1$$ +$$ +\left[x^{0}\right]f\left(x\right)=1 +$$ 对 $\ln{f\left(x\right)}$ 求导再积分,可得: -$$ \begin{aligned} +$$ +\begin{aligned} \left(\ln{f\left(x\right)}\right)'&\equiv\frac{f'\left(x\right)}{f\left(x\right)}&\pmod{x^{n}}\\ \ln{f\left(x\right)}&\equiv\int\frac{f'\left(x\right)}{f\left(x\right)}&\pmod{x^{n}} -\end{aligned} $$ +\end{aligned} +$$ 多项式的求导,积分时间复杂度为 $O\left(n\right)$,求逆时间复杂度为 $O\left(n\log{n}\right)$,故多项式求 $\ln$ 时间复杂度 $O\left(n\log{n}\right)$。 @@ -25,21 +29,29 @@ $$ \begin{aligned} 首先,对于多项式$f\left(x\right)$,若 $\exp{f\left(x\right)}$ 存在,则其必须满足: -$$\left[x^{0}\right]f\left(x\right)=0$$ +$$ +\left[x^{0}\right]f\left(x\right)=0 +$$ 否则 $\exp{f\left(x\right)}$ 的常数项不收敛. 对 $\exp{f\left(x\right)}$ 求导,可得: -$$\exp'{f\left(x\right)}\equiv\exp{f\left(x\right)}f'\left(x\right)\pmod{x^{n}}$$ +$$ +\exp'{f\left(x\right)}\equiv\exp{f\left(x\right)}f'\left(x\right)\pmod{x^{n}} +$$ 比较两边系数可得: -$$\left(n+1\right)\left[x^{n}\right]\exp{f\left(x\right)}=\sum_{i=0}^{n}\left[x^{i}\right]\exp{f\left(x\right)}\left(n-i+1\right)\left[x^{n-i}\right]f\left(x\right) $$ +$$ +\left(n+1\right)\left[x^{n}\right]\exp{f\left(x\right)}=\sum_{i=0}^{n}\left[x^{i}\right]\exp{f\left(x\right)}\left(n-i+1\right)\left[x^{n-i}\right]f\left(x\right) +$$ 又 $\left[x^{0}\right]f\left(x\right)=0$,则: -$$\left(n+1\right)\left[x^{n}\right]\exp{f\left(x\right)}=\sum_{i=0}^{n-1}\left[x^{i}\right]\exp{f\left(x\right)}\left(n-i+1\right)\left[x^{n-i}\right]f\left(x\right) $$ +$$ +\left(n+1\right)\left[x^{n}\right]\exp{f\left(x\right)}=\sum_{i=0}^{n-1}\left[x^{i}\right]\exp{f\left(x\right)}\left(n-i+1\right)\left[x^{n-i}\right]f\left(x\right) +$$ 使用分治 FFT 即可解决. @@ -124,10 +136,14 @@ $$\left(n+1\right)\left[x^{n}\right]\exp{f\left(x\right)}=\sum_{i=0}^{n-1}\left[ 当 $\left[x^{0}\right]f\left(x\right)=1$ 时,有: -$$f^{k}\left(x\right)=\exp{\left(k\ln{f\left(x\right)}\right)}$$ +$$ +f^{k}\left(x\right)=\exp{\left(k\ln{f\left(x\right)}\right)} +$$ 当 $\left[x^{0}\right]f\left(x\right)\neq 1$ 时,设 $f\left(x\right)$ 的最低次项为 $f_{i}x^{i}$,则: -$$f^{k}\left(x\right)=f_{i}^{k}x^{ik}\exp{\left(k\ln{\frac{f\left(x\right)}{f_{i}x^{i}}}\right)}$$ +$$ +f^{k}\left(x\right)=f_{i}^{k}x^{ik}\exp{\left(k\ln{\frac{f\left(x\right)}{f_{i}x^{i}}}\right)} +$$ 时间复杂度 $O\left(n\log{n}\right)$。 diff --git a/docs/math/poly/multipoint-eval-interpolation.md b/docs/math/poly/multipoint-eval-interpolation.md index aa7089ab..c06c4fdf 100644 --- a/docs/math/poly/multipoint-eval-interpolation.md +++ b/docs/math/poly/multipoint-eval-interpolation.md @@ -4,7 +4,9 @@ 给出一个多项式 $f\left(x\right)$ 和 $n$ 个点 $x_{1},x_{2},...,x_{n}$,求 -$$f\left(x_{1}\right),f\left(x_{2}\right),...,f\left(x_{n}\right) $$ +$$ +f\left(x_{1}\right),f\left(x_{2}\right),...,f\left(x_{n}\right) +$$ ### Method @@ -12,20 +14,26 @@ $$f\left(x_{1}\right),f\left(x_{2}\right),...,f\left(x_{n}\right) $$ 将给定的点分为两部分: -$$ \begin{aligned} +$$ +\begin{aligned} X_{0}&=\left\{x_{1},x_{2},...,x_{\left\lfloor\frac{n}{2}\right\rfloor}\right\}\\ X_{1}&=\left\{x_{\left\lfloor\frac{n}{2}\right\rfloor+1},x_{\left\lfloor\frac{n}{2}\right\rfloor+2},...,x_{n}\right\} -\end{aligned} $$ +\end{aligned} +$$ 构造多项式 -$$g_{0}\left(x\right)=\prod_{x_{i}\in X_{0}}\left(x-x_{i}\right) $$ +$$ +g_{0}\left(x\right)=\prod_{x_{i}\in X_{0}}\left(x-x_{i}\right) +$$ 则有 $\forall x\in X_{0}:g_{0}\left(x\right)=0$。 考虑将 $f\left(x\right)$ 表示为 $g_{0}\left(x\right)Q\left(x\right)+f_{0}\left(x\right)$ 的形式,即: -$$f_{0}\left(x\right)\equiv f\left(x\right)\pmod{g_{0}\left(x\right)}$$ +$$ +f_{0}\left(x\right)\equiv f\left(x\right)\pmod{g_{0}\left(x\right)} +$$ 则有 $\forall x\in X_{0}:f\left(x\right)=g_{0}\left(x\right)Q\left(x\right)+f_{0}\left(x\right)=f_{0}\left(x\right)$,$X_{1}$ 同理. @@ -33,7 +41,9 @@ $$f_{0}\left(x\right)\equiv f\left(x\right)\pmod{g_{0}\left(x\right)}$$ 时间复杂度 -$$T\left(n\right)=2T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log^{2}{n}\right) $$ +$$ +T\left(n\right)=2T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log^{2}{n}\right) +$$ ## 多项式的快速插值 @@ -41,7 +51,9 @@ $$T\left(n\right)=2T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log 给出一个 $n+1$ 个点的集合 -$$X=\left\{\left(x_{0},y_{0}\right),\left(x_{1},y_{1}\right),...,\left(x_{n},y_{n}\right)\right\}$$ +$$ +X=\left\{\left(x_{0},y_{0}\right),\left(x_{1},y_{1}\right),...,\left(x_{n},y_{n}\right)\right\} +$$ 求一个 $n$ 次多项式 $f\left(x\right)$ 使得其满足 $\forall\left(x,y\right)\in X:f\left(x\right)=y$。 @@ -51,16 +63,20 @@ $$X=\left\{\left(x_{0},y_{0}\right),\left(x_{1},y_{1}\right),...,\left(x_{n},y_{ 将给定的点分为两部分: -$$ \begin{aligned} +$$ +\begin{aligned} X_{0}&=\left\{x_{0},x_{1},...,x_{\left\lfloor\frac{n}{2}\right\rfloor}\right\}\\ X_{1}&=\left\{x_{\left\lfloor\frac{n}{2}\right\rfloor+1},x_{\left\lfloor\frac{n}{2}\right\rfloor+2},...,x_{n}\right\} -\end{aligned} $$ +\end{aligned} +$$ 假设已经求出了 $X_{0}$ 中的点插值出的多项式 $f_{0}\left(x\right)$,考虑如何使其变为所求的 $f\left(x\right)$。 构造多项式 -$$g_{0}\left(x\right)=\prod_{x_{i}\in X_{0}}\left(x-x_{i}\right) $$ +$$ +g_{0}\left(x\right)=\prod_{x_{i}\in X_{0}}\left(x-x_{i}\right) +$$ 则有 $\forall\left(x,y\right)\in X_{0}:g_{0}\left(x\right)=0$。 @@ -70,18 +86,26 @@ $$g_{0}\left(x\right)=\prod_{x_{i}\in X_{0}}\left(x-x_{i}\right) $$ 考虑构造 $f_{1}\left(x\right)$ 使得 $X_{1}$ 中的点也在 $f\left(x\right)$ 上,即: -$$\forall\left(x,y\right)\in X_{1}:f_{1}\left(x\right)g_{0}\left(x\right)+f_{0}\left(x\right)=y$$ +$$ +\forall\left(x,y\right)\in X_{1}:f_{1}\left(x\right)g_{0}\left(x\right)+f_{0}\left(x\right)=y +$$ 变形可得: -$$\forall\left(x,y\right)\in X_{1}:f_{1}\left(x\right)=\frac{y-f_{0}\left(x\right)}{g_{0}\left(x\right)}$$ +$$ +\forall\left(x,y\right)\in X_{1}:f_{1}\left(x\right)=\frac{y-f_{0}\left(x\right)}{g_{0}\left(x\right)} +$$ 这样就得到了新的待插值点集合: -$$X'_{1}=\left\{\left(x,\frac{y-f_{0}\left(x\right)}{g_{0}\left(x\right)}\right):\left(x,y\right)\in X_{1}\right\}$$ +$$ +X'_{1}=\left\{\left(x,\frac{y-f_{0}\left(x\right)}{g_{0}\left(x\right)}\right):\left(x,y\right)\in X_{1}\right\} +$$ 递归对 $X'_{1}$ 插值出 $f_{1}\left(x\right)$ 即可。 由于每次都需要多点求值求出新的待插值点集合 $X'_{1}$,时间复杂度为: -$$T\left(n\right)=2T\left(\frac{n}{2}\right)+O\left(n\log^{2}{n}\right)=O\left(n\log^{3}{n}\right) $$ +$$ +T\left(n\right)=2T\left(\frac{n}{2}\right)+O\left(n\log^{2}{n}\right)=O\left(n\log^{3}{n}\right) +$$ diff --git a/docs/math/poly/newton.md b/docs/math/poly/newton.md index 7f187f83..9d3d56c9 100644 --- a/docs/math/poly/newton.md +++ b/docs/math/poly/newton.md @@ -2,7 +2,9 @@ 给定多项式 $g\left(x\right)$,已知有 $f\left(x\right)$ 满足: -$$g\left(f\left(x\right)\right)\equiv 0\pmod{x^{n}}$$ +$$ +g\left(f\left(x\right)\right)\equiv 0\pmod{x^{n}} +$$ 求出模 $x^{n}$ 意义下的 $f\left(x\right)$。 @@ -16,17 +18,25 @@ $$g\left(f\left(x\right)\right)\equiv 0\pmod{x^{n}}$$ 将 $g\left(f\left(x\right)\right)$ 在 $f_{0}\left(x\right)$ 处进行泰勒展开,有: -$$\sum_{i=0}^{+\infty}\frac{g^{\left(i\right)}\left(f_{0}\left(x\right)\right)}{i!}\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv 0\pmod{x^{n}}$$ +$$ +\sum_{i=0}^{+\infty}\frac{g^{\left(i\right)}\left(f_{0}\left(x\right)\right)}{i!}\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv 0\pmod{x^{n}} +$$ 因为 $f\left(x\right)-f_{0}\left(x\right)$ 的最低非零项次数最低为 $\left\lceil\frac{n}{2}\right\rceil$,故有: -$$\forall 2\leqslant i:\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv 0\pmod{x^{n}}$$ +$$ +\forall 2\leqslant i:\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv 0\pmod{x^{n}} +$$ 则: -$$\sum_{i=0}^{+\infty}\frac{g^{\left(i\right)}\left(f_{0}\left(x\right)\right)}{i!}\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv g\left(f_{0}\left(x\right)\right)+g'\left(f_{0}\left(x\right)\right)\left(f\left(x\right)-f_{0}\left(x\right)\right)\equiv 0\pmod{x^{n}}$$ +$$ +\sum_{i=0}^{+\infty}\frac{g^{\left(i\right)}\left(f_{0}\left(x\right)\right)}{i!}\left(f\left(x\right)-f_{0}\left(x\right)\right)^{i}\equiv g\left(f_{0}\left(x\right)\right)+g'\left(f_{0}\left(x\right)\right)\left(f\left(x\right)-f_{0}\left(x\right)\right)\equiv 0\pmod{x^{n}} +$$ -$$f\left(x\right)\equiv f_{0}\left(x\right)-\frac{g\left(f_{0}\left(x\right)\right)}{g'\left(f_{0}\left(x\right)\right)}\pmod{x^{n}}$$ +$$ +f\left(x\right)\equiv f_{0}\left(x\right)-\frac{g\left(f_{0}\left(x\right)\right)}{g'\left(f_{0}\left(x\right)\right)}\pmod{x^{n}} +$$ ## Examples @@ -34,49 +44,67 @@ $$f\left(x\right)\equiv f_{0}\left(x\right)-\frac{g\left(f_{0}\left(x\right)\rig 设给定函数为 $h\left(x\right)$,有方程: -$$g\left(f\left(x\right)\right)=\frac{1}{f\left(x\right)}-h\left(x\right)\equiv 0\pmod{x^{n}}$$ +$$ +g\left(f\left(x\right)\right)=\frac{1}{f\left(x\right)}-h\left(x\right)\equiv 0\pmod{x^{n}} +$$ 应用 Newton's Method 可得: -$$ \begin{aligned} +$$ +\begin{aligned} f\left(x\right)&\equiv f_{0}\left(x\right)-\frac{\frac{1}{f_{0}\left(x\right)}-h\left(x\right)}{-\frac{1}{f_{0}^{2}\left(x\right)}}&\pmod{x^{n}}\\ &\equiv 2f_{0}\left(x\right)-f_{0}^{2}\left(x\right)h\left(x\right)&\pmod{x^{n}} -\end{aligned} $$ +\end{aligned} +$$ 时间复杂度 -$$T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ +$$ +T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) +$$ ### [多项式开方](../poly-sqrt) 设给定函数为 $h\left(x\right)$,有方程: -$$g\left(f\left(x\right)\right)=f^{2}\left(x\right)-h\left(x\right)\equiv 0\pmod{x^{n}}$$ +$$ +g\left(f\left(x\right)\right)=f^{2}\left(x\right)-h\left(x\right)\equiv 0\pmod{x^{n}} +$$ 应用 Newton's Method 可得: -$$ \begin{aligned} +$$ +\begin{aligned} f\left(x\right)&\equiv f_{0}\left(x\right)-\frac{f_{0}^{2}\left(x\right)-h\left(x\right)}{2f_{0}\left(x\right)}&\pmod{x^{n}}\\ &\equiv\frac{f_{0}^{2}\left(x\right)+h\left(x\right)}{2f_{0}\left(x\right)}&\pmod{x^{n}} -\end{aligned} $$ +\end{aligned} +$$ 时间复杂度 -$$T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ +$$ +T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) +$$ ### [多项式 exp](../poly-exp) 设给定函数为 $h\left(x\right)$,有方程: -$$g\left(f\left(x\right)\right)=\ln{f\left(x\right)}-h\left(x\right)\pmod{x^{n}}$$ +$$ +g\left(f\left(x\right)\right)=\ln{f\left(x\right)}-h\left(x\right)\pmod{x^{n}} +$$ 应用 Newton's Method 可得: -$$ \begin{aligned} +$$ +\begin{aligned} f\left(x\right)&\equiv f_{0}\left(x\right)-\frac{\ln{f_{0}\left(x\right)}-h\left(x\right)}{\frac{1}{f_{0}\left(x\right)}}&\pmod{x^{n}}\\ &\equiv f_{0}\left(x\right)\left(1-\ln{f_{0}\left(x\right)+h\left(x\right)}\right)&\pmod{x^{n}} -\end{aligned} $$ +\end{aligned} +$$ 时间复杂度 -$$T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ +$$ +T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) +$$ diff --git a/docs/math/poly/sqrt.md b/docs/math/poly/sqrt.md index ff546cfa..a591c852 100644 --- a/docs/math/poly/sqrt.md +++ b/docs/math/poly/sqrt.md @@ -2,7 +2,9 @@ 给定多项式 $g\left(x\right)$,求 $f\left(x\right)$,满足: -$$f^{2}\left(x\right)\equiv g\left(x\right) \pmod{x^{n}}$$ +$$ +f^{2}\left(x\right)\equiv g\left(x\right) \pmod{x^{n}} +$$ ## Methods @@ -10,7 +12,8 @@ $$f^{2}\left(x\right)\equiv g\left(x\right) \pmod{x^{n}}$$ 假设现在已经求出了 $g\left(x\right)$ 在模 $x^{\left\lceil\frac{n}{2}\right\rceil}$ 意义下的平方根 $f_{0}\left(x\right)$,则有: -$$ \begin{aligned} +$$ +\begin{aligned} f_{0}^{2}\left(x\right)&\equiv g\left(x\right) &\pmod{x^{\left\lceil\frac{n}{2}\right\rceil}}\\ f_{0}^{2}\left(x\right)-g\left(x\right)&\equiv 0 &\pmod{x^{\left\lceil\frac{n}{2}\right\rceil}}\\ \left(f_{0}^{2}\left(x\right)-g\left(x\right)\right)^{2}&\equiv 0 &\pmod{x^{n}}\\ @@ -18,13 +21,16 @@ $$ \begin{aligned} \left(\frac{f_{0}^{2}\left(x\right)+g\left(x\right)}{2f_{0}\left(x\right)}\right)^{2}&\equiv g\left(x\right) &\pmod{x^{n}}\\ \frac{f_{0}^{2}\left(x\right)+g\left(x\right)}{2f_{0}\left(x\right)}&\equiv f\left(x\right) &\pmod{x^{n}}\\ 2^{-1}f_{0}\left(x\right)+2^{-1}f_{0}^{-1}\left(x\right)g\left(x\right)&\equiv f\left(x\right) &\pmod{x^{n}} -\end{aligned} $$ +\end{aligned} +$$ 倍增计算即可。 时间复杂度 -$$T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ +$$ +T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) +$$ 还有一种常数较小的写法就是在倍增维护 $f\left(x\right)$ 的时候同时维护 $f^{-1}\left(x\right)$ 而不是每次都求逆. diff --git a/docs/math/poly/tri-func.md b/docs/math/poly/tri-func.md index bc19c363..8080adca 100644 --- a/docs/math/poly/tri-func.md +++ b/docs/math/poly/tri-func.md @@ -6,17 +6,21 @@ 首先由 [Euler's formula](https://en.wikipedia.org/wiki/Euler's_formula) $\left(e^{ix} = \cos{x} + i\sin{x}\right)$ 可以得到[三角函数的另一个表达式](https://en.wikipedia.org/wiki/Trigonometric_functions#Relationship_to_exponential_function_and_complex_numbers): -$$ \begin{aligned} +$$ +\begin{aligned} \sin{x} &= \frac{e^{ix} + e^{-ix}}{2i} \\ \cos{x} &= \frac{e^{ix} - e^{-ix}}{2} -\end{aligned} $$ +\end{aligned} +$$ 那么代入 $f\left(x\right)$ 就有: -$$ \begin{aligned} +$$ +\begin{aligned} \sin{f\left(x\right)} &= \frac{\exp{\left(if\left(x\right)\right)} - \exp{\left(-if\left(x\right)\right)}}{2i} \\ \cos{f\left(x\right)} &= \frac{\exp{\left(if\left(x\right)\right)} + \exp{\left(-if\left(x\right)\right)}}{2} -\end{aligned} $$ +\end{aligned} +$$ 注意到我们是在 $\mathbb{Z}_{998244353}$ 上做 NTT,那么相应地,虚数单位 $i$ 应该换成 $\sqrt{-1} \equiv \sqrt{998244352} \equiv 86583718 \pmod{998244353}$。 diff --git a/docs/math/primitive-root.md b/docs/math/primitive-root.md index 5b630c16..ad0dce50 100644 --- a/docs/math/primitive-root.md +++ b/docs/math/primitive-root.md @@ -40,7 +40,9 @@ $(g,m) =1$,设 $p_1, p_2, \cdots, p_k$ 是 $\varphi(m)$ 的所有不同的素 由裴蜀定理得,一定存在一组 $k,x$ 满足 $kt=x(p-1)+\gcd(t,p-1)$;由欧拉定理/费马小定理得 $a^{p-1}\equiv 1\pmod{p}$;故有: -$$1\equiv a^{kt}\equiv a^{x(p-1)+\gcd(t,p-1)}\equiv a^{\gcd(t,p-1)}\pmod{p}$$ +$$ +1\equiv a^{kt}\equiv a^{x(p-1)+\gcd(t,p-1)}\equiv a^{\gcd(t,p-1)}\pmod{p} +$$ 又有 $t