【learning】 多项式求逆元详解+模板

概述

多项式求逆元是一个非常重要的知识点,许多多项式操作都需要用到该算法,包括多项式取模,除法,开跟,求ln,求exp,快速幂。用快速傅里叶变换和倍增法可以在$O(n log n)$的时间复杂度下求出一个$n$次多项式的逆元。

前置技能

快速数论变换(NTT),求一个数$x$在模$p$意义下的乘法逆元。

多项式的逆元

给定一个多项式$A$,其次数为$deg_A$,若存在一个多项式$B$,使其满足$deg_B≤deg_A$,且$A(x)\times B(x) \equiv 1 (mod x^n)$,则$B(x)$即为$A(x)$在模$x^n$意义下的的乘法逆元。

原文地址:https://www.cnblogs.com/xiefengze1/p/9097564.html

时间: 2024-10-14 03:30:31

【learning】 多项式求逆元详解+模板的相关文章

Baby_Step,Gaint_Step(分析详解+模板)

以下是总结自他人博客资料,以及本人自己的学习经验. [Baby_Step,Gaint_Step定义] 高次同余方程.   BL == N (mod P) 求解最小的L.由于数据范围很大,暴力不行 这里用到baby_step,giant_step算法.意为先小步,后大步. 令L=i*m+j  (m=ceil(sqrt(p-1))), 那么原式化为 B^(i*m)*B^j==N(MOD P)---->B^j===N*B^(-i*m)(MOD P) 我们先预处理B^0,B^1,B^2--B^(m-1)

6.跟我学solr---请求参数详解

简介 前面我们在讲SolrRequestHandler和QueryResponseWriter的时候提到过两个参数'qt'和'wt",这两个参数是分别用于选择对应的SolrRequestHandler和QueryResponseWriter的.solr定义了很多类似的参数,它们都分别属于某个大类中,例如"qt"和"wt"就属于CoreQueryParameters.下面罗列一下solr的所有参数列表,来源于solr官网.下面笔者会一一给大家讲解这些参数的作

高斯消元法(Gauss Elimination)【超详解&模板】

高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵.高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组. 所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解. 1.线性方程组 1)构造增广矩阵,即系数矩阵A增加上常数向量b(A|b) 2)通过以交换行.某行乘以非负常数和两行相加这三种初等变化将原系统转化为更简单的三角形式(triangular form) 注:这里的初等变化可以通过

逆元详解 (转载)

转载自: http://blog.csdn.net/acdreamers/article/details/8220787 今天我们来探讨逆元在ACM-ICPC竞赛中的应用,逆元是一个很重要的概念,必须学会使用它. 对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元. 逆元一般用扩展欧几里得算法来求得,如果为素数,那么还可以根据费马小定理得到逆元为. 推导过程如下 求现在来看一个逆元最常见问题,求如下表达式的值(已知) 当然这个经典的问题有很多方法,最常见的就是扩展欧几里得,如果

乘法逆元详解

由于我是蒟蒻,就用蒟蒻能理解的简单说法来讲吧. 乘法逆元用于同余方程中.数学家们看到在同余方程中的加减乘法都好做,只有除法不好搞,于是发明了乘法逆元这么个东西... 根据蒟蒻的理解,乘法逆元是这样的: 设C为B的乘法逆元, 有 A/B≡D(mod p) 则有 A*C≡D(mod p) 显然这就是把除法变成了乘法,这样同余方程就可以解了. 如何求乘法逆元? 这里只给出一种方法(因为我就会一种而且它最简单):费马小定理 a在mod p意义下的乘法逆元是  a^(p-2) 证明?不会 另外,如果一个数

后缀数组详解+模板

后缀数组 注 SA[] 第几名是谁 后缀数组:后缀数组 SA 是一个一维数组, 它保存 1..n 的某个排列 SA[1] ,SA[2],……,SA[n],并且保证 Suffix(SA[i]) < Suffix(SA[i+1]),1≤i<n .也就是将 S 的 n 个后缀从小到大进行排序之后把排好序的后缀的开头位置顺次放入 SA 中. Rank[] 谁是第几名名次数组:名次数组 Rank[i]保存的是 Suffix(i)在所有后缀中从小到大排列的“名次 ” . r[]:原始数据j当前字符串的长度

WPF 详解模板

在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都派生自FrameworkTemplate抽象类. 1.ControlTemplate ControlTemplate:控件模板主要有两个重要属性:VisualTree内容属性和Triggers触发器.所谓VisualTree(视觉树),就是呈现我们所画的控件

discuz默认模板文件结构详解-模板文件夹介绍

| — template — default   系统内置风格模板(默认风格)| — template — default  – discuz_style_default.xml  风格安装文件,可用风格导出功能创建| — template — default  – preview.jpg  预览图| — template — default  – common 风格中的公共包含文件,内含css.htm模板文件| — template — default  – common  –  block_

树状数组的改段求段详解

以下是对于如何利用树状数组进行区间修改和区间查询的简介 可以代替不需要lazy tag的线段树,且代码量和常数较小 首先你需要学会树状数组,如果不会的话以下先讲解黑匣子使用树状数组的姿势 首先定义一个数组 int c[N]; 并清空 memset(c, 0, sizeof c); 1.单点修改 : c[x] += y; 对应的函数是 change(x, y); 2.求前缀和 :  对应的函数是 int sum(x) 两种操作的复杂度都是O(logn) 模版如下 int c[N], maxn; i