日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

「学习笔记」多项式相关

發(fā)布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「学习笔记」多项式相关 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)多項(xiàng)式也有好久了,可是我自己還沒怎么認(rèn)認(rèn)真真推過柿子,導(dǎo)致啥都不會,然后被吊打。

看來再不回顧一下就不行了啊。

多項(xiàng)式乘法

寫了一個好看一點(diǎn)的\(\mathrm{NTT}\)板子,僅供參考。

inline int Add(int x, int y) { return (x + y) % Mod; } inline int Sub(int x, int y) { return (x - y + Mod) % Mod; } inline int Mul(int x, int y) { return 1ll * x * y % Mod; } int fastpow(int x, int y) {int ans = 1;for (; y; y >>= 1, x = 1ll * x * x % Mod)if (y & 1) ans = 1ll * ans * x % Mod;return ans; }int r[maxn], w[maxn]; void FFT(int *p, int N) {for (int i = 0; i < N; i++) if (i < r[i]) std::swap(p[i], p[r[i]]);for (int i = 1, s = 2, t = N >> 1; i < N; i <<= 1, s <<= 1, t >>= 1)for (int j = 0; j < N; j += s) for (int k = 0, o = 0; k < i; ++k, o += t){int x = p[j + k], y = 1ll * w[o] * p[i + j + k] % Mod;p[j + k] = (x + y) % Mod, p[i + j + k] = (x - y + Mod) % Mod;} }template<typename C> void PolyMul(int *a, int *b, int N, int P, C cal) {w[0] = 1, w[1] = fastpow(3, (Mod - 1) / N);for (int i = 0; i < N; i++) r[i] = (r[i >> 1] >> 1) | ((i & 1) << P);for (int i = 2; i < N; i++) w[i] = 1ll * w[i - 1] * w[1] % Mod;FFT(a, N), FFT(b, N); for (int i = 0; i < N; i++) b[i] = cal(a[i], b[i]);FFT(b, N); std::reverse(b + 1, b + N); int invn = fastpow(N, Mod - 2);for (int i = 0; i < N; i++) b[i] = 1ll * b[i] * invn % Mod; }

泰勒展開

如果\(f(x)\)\(x_0\)處存在\(n\)階導(dǎo),那么有:
\[ f(x) = \sum_{i=0}^n \frac {f^{(i)}(x_0)} {i!} (x - x_0) ^ i + \xi \]
其中\(\xi\)是余項(xiàng),當(dāng)\(n\)趨近于無窮大時,\(\xi\)趨近于高階無窮小。

比如說\(e ^ x = 1 + \frac x{1!} + \frac {x^2}{2!} + \cdots\)

牛頓迭代

首先可以知道多項(xiàng)式的任何一個運(yùn)算都可以表示成對于一個多項(xiàng)式\(B(x)\)以及一個給定的函數(shù)\(F(x)\),求\(F(B(x)) \equiv 0 \pmod {x ^ n}\)

設(shè)\(B_n(x)\)表示當(dāng)模數(shù)是\(x ^ n\)的合法解。那么當(dāng)\(n = 1\)是我們很容易可以得到結(jié)果,考慮如何用\(B_n(x)\)推到\(B_{2n}(x)\)

\(F(B_{2n}(x))\)\(B_n(x)\)處泰勒展開,我們得到\(F(B_{2n}(x)) = F(B_n(x)) + F'(B_n(x))(B_{2n}(x) - B_n(x))\)

那么我們化簡一下就是:
\[ B_{2n}(x) = B_n(x) - \frac {F(B_n(x))} {F'(B_n(x))} \]
這樣我們就可以倍增求解。

多項(xiàng)式運(yùn)算

接下來均假設(shè)我們要做運(yùn)算的多項(xiàng)式是\(A(x)\)

多項(xiàng)式求逆

\(F(B_n(x)) = A(x) * B_n(x) - 1 \equiv 0\)

于是:
\[ \begin{aligned} B_{2n} &= B_n(x) - \frac {A(x) * B_n(x) - 1} {A(x)} \\ &= B_n(x) - B_n(x)(A(x) * B_n(x) - 1) \\ &= 2B_n(x) - A(x) * B_n^2(x) \end{aligned} \]
注意第一步推到第二步是因?yàn)?span id="ozvdkddzhkzd" class="math inline">\(B_n(x)\)是\(A(x)\)的逆。

void Inv(int *a, int *b, int N) {static int c[maxn]; if (N == 1) return (void) (*b = fastpow(*a, Mod - 2));Inv(a, b, (N + 1) >> 1); int L = 1, P = -1; while (L < (N << 1)) L <<= 1, ++P;std::copy(a, a + N, c), std::fill(c + N, c + L, 0);PolyMul(c, b, L, P, [] (int a, int b) { return Mul(Sub(2, Mul(a, b)), b); });std::fill(b + N, b + L, 0); }

多項(xiàng)式開根

ln一下再exp一下

\(F(B_n(x)) = B_n^2(x) - A(x) \equiv 0\)

于是有:
\[ B_{2n} = B_n(x) - \frac {B_n^2(x) - A(x)} {2B_n(x)} = \frac 12\left(B_n(x) + \frac {A(x)} {B_n(x)} \right) \]
可以看出多項(xiàng)式開根中需要套用多項(xiàng)式求逆。

void Sqrt(int *a, int *b, int N) {static int c[maxn], d[maxn]; if (N == 1) return (void) (*b = 1);Sqrt(a, b, (N + 1) >> 1); int L = 1, P = -1; while (L < (N << 1)) L <<= 1, ++P;std::copy(a, a + N, c), std::fill(c + N, c + L, 0);std::fill(d, d + L, 0), Inv(b, d, N), PolyMul(c, d, L, P, Mul);for (int i = 0; i < N; i++) b[i] = Mul(Add(b[i], d[i]), 499122177); }

多項(xiàng)式\(\ln\)

不需要牛頓迭代。
\[ \begin{aligned} \ln(A(x)) &= B(x) \\ \Rightarrow\frac {A'(x)}{A(x)} &= B'(x) \end{aligned} \]
然后\(A(x)\)就求導(dǎo)求逆,乘起來再積分一下就可以了。

void Ln(int *f, int *g, int N) {static int A[maxn], B[maxn]; Inv(f, B, N), A[N - 1] = 0;for (int i = 1; i < N; i++) A[i - 1] = Mul(f[i], i);int L = 1, P = -1; while (L < (N << 1)) L <<= 1, ++P;PolyMul(A, B, L, P, Mul), g[0] = 0;for (int i = 1; i < N; i++) g[i] = Mul(B[i - 1], fastpow(i, Mod - 2));std::fill(A, A + L, 0), std::fill(B, B + L, 0); }

多項(xiàng)式\(\exp\)

\(F(B_n(x)) = \ln(B_n(x)) - A(x) \equiv 0\)

推下式子可得:
\[ \begin{aligned} B_{2n}(x) &= B_n(x) - \frac {\ln(B_n(x)) - A(x)} {\frac 1 {B_n(x)}} \\ &= B_n(x)(1 - \ln(B_n(x)) + A(x)) \end{aligned} \]

void Exp(int *a, int *b, int N) {static int c[maxn]; if (N == 1) return (void) (*b = 1);Exp(a, b, (N + 1) >> 1), Ln(b, c, N);int L = 1, P = -1; while (L < (N << 1)) L <<= 1, ++P;for (int i = 0; i < N; i++) c[i] = Sub(a[i], c[i]); c[0] = Add(c[0], 1);PolyMul(c, b, L, P, Mul), std::fill(b + N, b + L, 0); }

多項(xiàng)式除法

給定一個\(n\)次多項(xiàng)式\(A(x)\)和一個\(m\)次多項(xiàng)式\(B(x)\),求解一個\(n - m\)次的多項(xiàng)式\(Q(x)\)以及一個小于\(n - m\)次的多項(xiàng)式\(R(x)\),使得\(A(x) = Q(x)B(x) + R(x)\)

定義運(yùn)算\(R\)使得\(A^R(x) = x ^ nA(\frac 1x)\),也就是說將\(A(x)\)的系數(shù)翻轉(zhuǎn)。

那么可以得到:
\[ \begin{aligned} A(x) &= Q(x)B(x) + R(x) \\ A\left(\frac 1x\right) &= Q\left(\frac 1x\right)B\left(\frac 1x\right) + R\left(\frac 1x\right) \\ x ^ nA\left(\frac 1x\right) &= \left(x ^ m B\left(\frac 1x\right)\right) * \left( x ^ {n - m} Q\left(\frac 1x\right)\right) + x ^ n R\left(\frac 1x\right) \\ A^R(x) &= Q^R(x)B^R(x) + x^{n-m+1}R^R(x) \\ A^R(x) &\equiv Q^R(x)B^R(x) \pmod{x ^ {n - m + 1}} \\ Q^R(x) &\equiv \frac {A^R(x)} {B^R(x)} \pmod{x ^ {n - m + 1}} \end{aligned} \]
那么這樣就可以用多項(xiàng)式求逆求出\(Q\),再用\(R(x) = A(x) - Q(x)B(x)\)即可求出\(R\)

轉(zhuǎn)載于:https://www.cnblogs.com/cj-xxz/p/11166903.html

總結(jié)

以上是生活随笔為你收集整理的「学习笔记」多项式相关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成为性瘾网黄的yy对象后 | 葵司av电影| 黄色av网址在线 | 欧美一级特黄aaaaaa | 日韩av片在线 | 人物动物互动39集免费观看 | 9999av | 色婷婷av一区二区三区软件 | 夜夜操夜夜骑 | 91精品综合久久久久久 | 国产伦一区二区三区 | 成人午夜又粗又硬又大 | 国产精品成人国产乱 | 免费在线看污片 | 日韩在线一区二区三区四区 | 亚洲精品白浆 | 国产精品99一区二区三区 | 精品欧美乱码久久久久久 | 国产亚洲精品成人无码精品网站 | 人人妻人人澡人人爽 | 成人国产 | 老色鬼av| 国产一道本 | 国语对白一区 | 五月婷婷丁香花 | 国产精品一区二区黑人巨大 | 日韩一级在线播放 | 中文字幕永久在线播放 | 国产免费高清视频 | 欧美大片在线看 | 欧美在线日韩在线 | 国产视频在线一区二区 | 天堂资源在线播放 | 免费看黄色的网站 | 天天躁日日躁aaaaxxxx | 极品熟妇大蝴蝶20p 国产偷自拍视频 | www.rihan| 手机在线一区二区三区 | 国产精品高潮呻吟久久久 | 国产伦精品一区二区三区免.费 | 成人伊人网 | 日韩福利网站 | 久久亚洲国产精品 | 韩国伦理片在线观看 | 亚洲+小说+欧美+激情+另类 | 完全免费av | 黄色的毛片 | 亚洲av色区一区二区三区 | 台湾佬在线 | 奇米狠狠干 | 影音先锋国产精品 | 亚洲黄色影院 | 亚洲欧美日韩不卡 | 777久久| 亚洲精品成a人在线观看 | 电影91久久久 | 妖精视频一区二区三区 | 老司机黄色片 | 久久视频在线免费观看 | 二区三区在线视频 | 国产毛片久久久久久国产毛片 | 亚洲激情在线播放 | av免播放器在线观看 | 日韩亚洲视频在线观看 | 久久激情小说 | 国产成人精品综合在线观看 | 国产成人精品亚洲线观看 | 日韩毛片 | 91夫妻在线| 三点尽露的大尺度国产 | 亚洲在线观看av | 中文无码日韩欧 | 九草影院 | 丝袜美腿亚洲综合 | 亚洲一区二区三 | av网页在线 | 91玉足脚交白嫩脚丫 | 亚洲一区二区在线免费观看 | 波多野结衣中文字幕在线 | 欧美黑人三级 | 日韩欧美亚洲天堂 | 一级看片免费视频 | 欧美激情亚洲激情 | 久久国产精品久久精品国产 | 500福利视频导航 | 久久精热 | www.午夜| 亚洲伦理一区二区 | 红杏出墙记 | aaaa黄色| 国产成人高清 | 华人色 | 伊人av在线| www.日本色 | 中国丰满老妇xxxxx交性 | 美女精品久久 | 爱逼综合网 | 亚洲一区视频在线播放 | www.rihan|