首页 > 其他分享 >多项式全家桶

多项式全家桶

时间:2024-04-20 09:12:21浏览次数:22  
标签:log pmod 多项式 全家 dfrac 2m deg

【多项式求逆】

【整式取模】

定义单项式取模。

\[C\cdot x^k\bmod x^n=\begin{cases}0&k\ge n\\C\cdot x^k&k<n\end{cases} \]

定义多项式取模为它的每一项取模相加。

可以看出,模 \(x^n\) 相当于保留 \(0\sim n-1\) 次项。

【问题描述】

一般形式:已知多项式 \(A(x),C(x)\),求 \(B(x)\) 使 \(A(x)B(x)=C(x)\pmod {x^n}\)。

特殊形式:已知多项式 \(A(x)\),求 \(D(x)\) 使 \(A(x)D(x)=1\pmod {x^n}\)。

我们只需要解特殊形式,因为解出特殊形式的 \(D(x)\) 后,可以令 \(B(x)=D(x)C(x)\),一次卷积 \(O(n\log n)\) 即可。

【解法 - \(O(n^2)\)】

已知 \(A(x)\),求 \(B(x)\) 使 \(A(x)B(x)=1\pmod {x^n}\)。

记 \(A,B\) 的系数为 \(A_0\sim A_{n-1},B_0\sim B_{n-1}\)。

首先要保证 \(A_0\neq 0\),否则 \(A(x)\) 不可逆;然后可得 \(A_0B_0=1\),可以解 \(B_0\)。

然后 \(A_1B_0+A_0B_1=0\),可以解出 \(B_1\) …… 如此循环,可以 \(O(n^2)\) 求解。

【解法 - \(O(n\log n)\)】

注意到如果 \(A(x)B(x)=1\pmod {x^n}\),则 \(A(x)B(x)=1\pmod {x^{n-1}}\)。所以我们可以增大 \(n\),这样的解也是符合要求的解。

令 \(n=2^k\),方便我们用倍增的方法优化。
假设已知 \(B(x)\) 满足 \(A(x)B(x)=1\pmod {x^m}\),怎么求得 \(B_2(x)\) 满足 \(A(x)B_2(x)=1\pmod {x^{2m}}\)?

\[\begin{aligned} AB-1&=0\pmod {x^m}\\ (AB-1)^2&=0\pmod {x^{2m}}\\ A^2B^2-2AB+1&=0\pmod {x^{2m}}\\ 2AB-A^2B^2&=1\pmod {x^{2m}}\\ A(2B-AB^2)&=1\pmod {x^{2m}}\\ \end{aligned} \]

因此 \(B_2(x)=2B(x)-A(x)B(x)^2\)。从 \(A(x),B(x)\) 到 \(B_2(x)\),只需要做两次多项式乘法和一次多项式减法,复杂度 \(O(n\log n)\)。
但是倍增也有一个 \(\log\) 啊?怎么是 \(O(n\log n)\) 呢?

因为对于一个 \(m\),我们只保留多项式前 \(m\) 项即可,不用保留 \(n\) 项。因此复杂度应该是 \(O(n\log n+\frac{n}{2}\log n+\frac{n}{4}\log n+\cdots)=O(n\log n)\)。

【多项式带余除法】

给定 \(A(x),B(x)\),找 \(C(x),R(x)\) 使得 \(A(x)=B(x)C(x)+R(x)\),要求 \(\deg R(x)<\deg B(x)\)。
不妨 \(\deg A\ge\deg B\),不然直接令 \(C(x)=0,R(x)=A(x)\)。记 \(n=\deg A,m=\deg B\)。

定义一个操作 \(R\),\(A^R(x)=x^nA(\dfrac{1}{x})\)。
\(A^R\) 的作用其实就是把 \(A\) 的系数翻转(Reverse)了。可以手算一下。

\[\begin{aligned} A(x)&=B(x)C(x)+R(x)\\ A(\dfrac{1}{x})&=B(\dfrac{1}{x})C(\dfrac{1}{x})+R(\dfrac{1}{x})\\ x^nA(\dfrac{1}{x})&=x^nB(\dfrac{1}{x})C(\dfrac{1}{x})+x^nR(\dfrac{1}{x})\\ \end{aligned} \]

标签:log,pmod,多项式,全家,dfrac,2m,deg
From: https://www.cnblogs.com/FLY-lai/p/18147173

相关文章

  • 多项式全家桶
    多项式求逆考虑倍增。若已经求出\(A\timesB'\equiv1\pmod{x^n}\),我们希望求出\(B\)使得\(A\timesB\equiv1\pmod{x^{2n}}\)。有:\[B-B'\equiv0\pmod{x^n}\]\[(B-B')^2\equiv0\pmod{x^{2n}}\]\[B^2-2BB'+B'^2\......
  • 亚马逊云集齐 Claude 3 全家桶;世界数字技术院发布大模型安全国际标准丨 RTE 开发者日
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 用Vue全家桶纯手工搓了一个开源版「抖音」
    前言2018年刚入行前端时,公司使用的还是Angular。Angular什么都好,就是写代码时的体验老糟心了,改一个地方,按下保存之后,要等好几秒刷新后才能看到效果,Webstorm无比好用的自动保存,对我来说反而像是一个负担。然而2024年了,Angular已经更新了17版本,还是没有解决这个问题,热替换依然那么......
  • 多项式学习笔记
    1.前置知识1.1基础\(f(x)=\sum_{i=0}^na_ix^i\)被称为一个\(n\)次多项式。\(\degf(x)\)表示多项式的次数。\(f(x)g(x)=h(x)\)称为多项式乘法,也叫多项式卷积,满足\(h_n=\sum_{i+j=n}f_ig_j\)。1.2点值给定一个多项式\(f(x)\),再给\(m\)个点\(x_1,\dot......
  • idea、pycharm、datagrip全家桶彻底卸载
    前序在win11环境,以idea2023.3.6版本为例教大家如何彻底卸载idea。一、保存配置信息(可跳过)在卸载重装idea时想保留自己的一些配置,例如颜色、字体大小等等,可以导出自己的配置信息。如果不想保存可跳过。1、导出配置File>ManageIDESettings>ExportSettings选好存......
  • 1010 一元多项式求导
    测试点2应该是只输入1对并且是一个常数,如30这种。应该输出00。#include<bits/stdc++.h>usingnamespacestd;vector<int>a,b;//系数指数intmain(){ intxs,zs; while(cin>>xs>>zs){ a.push_back(xs); b.push_back(zs); } if(a.size()==1&&b[0]==0){ ......
  • 【模板】任意模数多项式乘法:三模 NTT
    前置知识https://www.cnblogs.com/caijianhong/p/template-crt.htmlhttps://www.cnblogs.com/caijianhong/p/template-fft.html题目描述任意模数多项式乘法solution首先我们打开https://blog.miskcoo.com/2014/07/fft-prime-table这篇文章找到\(998244353\)附近的几个质......
  • 【数学】多项式插值
    问题描述给出\(n+1\)个二维平面上的点对\((x_0,y_0),(x_1,y_1),(x_2,y_2),\cdots,(x_{n},y_{n})\),求一个经过这些点的不超过\(n\)次的多项式\(P(x)=p_{n}\cdotx^{n}+p_{n-1}\cdotx^{n-1}+p_{n-2}\cdotx^{n-2}+\cdots+p_{1}\cdotx+......
  • 用Vue全家桶手工搓了一个类似抖音短视频的软件,全开源
    用Vue全家桶手工搓了一个类似抖音短视频的软件,全开源软件简介用Vue全家桶手工搓了一个高仿抖音,全开源PC浏览器请用手机模式访问。先按F12调出控制台,再按Ctrl+Shift+M切换到手机模式,手机请用Via浏览器或者Chrome浏览器预览。其他浏览器会强制将视频全屏,导致样式都失效。......
  • CF156D-Prufer序列、多项式定理
    link:https://codeforces.com/contest/156/problem/D题意:给一张无向简单图\(G\),问有多少种加边的方式,使得图联通,并且需要加的边最小。\(|E|,|V|\leq10^5\),对\(k\)取模前置知识应该是Prufer序列(这题应该是绕不开这个东西)对每个连通分支考虑答案,如果有\(k\)个连通分支,大小......