首页 > 其他分享 >多项式板子

多项式板子

时间:2024-03-07 20:33:20浏览次数:21  
标签:opt int 多项式 len 板子 poly

不想折磨自己了,以后都来这里贺。
卷积:

点击查看代码
poly NTT(poly a,int opt)
{
    int len=a.size();
    For(i,0,len-1){if(i<r[i])swap(a[i],a[r[i]]);}
    for(int k=1;k<len;k<<=1)
    {
        ll wn=qpow(((opt==1)?g:inv_g),((mod-1)/(k<<1)));
        for(int i=0;i<len;i+=(k<<1))
        {
            ll w=1;
            for(int j=0;j<k;++j,(w*=wn)%=mod)
            {
                ll x=a[i+j],y=a[i+j+k];(y*=w)%=mod;
                a[i+j]=x;Add(a[i+j],y);
                a[i+j+k]=x;Sub(a[i+j+k],y);
            }
        }
    }
    if(opt==-1){For(i,0,len-1)(a[i]*=inv[len])%=mod;}
    return a;
}
poly operator * (poly a,poly b)
{
    int n=(a.size()-1),m=(b.size()-1);
    int k=0;
    while((1<<k)<=(n+m+1))++k;
    For(i,1,((1<<k)-1))r[i]=((r[i>>1]>>1)|((i&1)<<(k-1)));
    poly A,B;A.clear();B.clear();
    A.resize(1<<k);B.resize(1<<k);
    For(i,0,n)A[i]=a[i];For(i,0,m)B[i]=b[i];
    A=NTT(A,1);B=NTT(B,1);
    int len=A.size();For(i,0,len-1)(A[i]*=B[i])%=mod;
    poly res=NTT(A,-1);
    res.resize(n+m+1);return res;
}

标签:opt,int,多项式,len,板子,poly
From: https://www.cnblogs.com/llzer/p/18059693

相关文章

  • 板子
    例题题目描述某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅......
  • 在嵌入式设备中用多项式快速计算三角函数和方根
    惯性传感器的倾角计算要用到三角函数.在MCS-51,CortexM0,M3之类的芯片上编程时,能使用的资源是非常有限,通常只有两位数KB的Flash,个位数KB的RAM.如果要使用三角函数和开方就要引入math.h,会消耗掉10KB以上的Flash空间.在很多情况下受硬件资源限制无法使用math.h,......
  • 带权并查集板子
    以一道区间和查询来说明板子如何使用1.merge的时候只需要维护两个根节点的距离,利用的是合并时题目给的信息2.find的时候更新维护是子节点到根的距离3.需要加一个查询函数,因为距离数组是开在结构体内部的。题目描述对于一个长度为\(N\)的整数数列\(A_{1},A_{2},\cdotsA_......
  • 多项式板子
    #include<bits/stdc++.h>#defineullunsignedlonglongusingnamespacestd;constintN=262150,mod=998244353,g=3,invg=(mod+1)/3,inv2=(mod+1)/2;intrev[N];ulla[N],b[N],w[N],inv[N];intqpow(inta,intb){ intans=1; while(b){ if(b&1){ an......
  • SC的个人板子库
    声明Sugar_Cube的博客园主页宇宙安全声明本文包含了笔者常用的OI算法、数据结构的模板不保证正确,但能通过相应的模板题(如果有会挂出)如有错误请在评论区指出(虽然大抵没人看就是了)码风是笔者的个人习惯(能看懂就好喵),部分代码可能会省略快读Read()持续更新咕咕咕输入输出优化......
  • 【模板】任意模数多项式乘法
    题目描述给定\(2\)个多项式\(F(x),G(x)\),请求出\(F(x)\timesG(x)\)。系数对\(p\)取模,且不保证\(p\)可以分解成\(p=a\cdot2^k+1\)之形式。题解可以用快速数论变换NTT算法,关键在于取的那个素数。由于系数最大为\(10^5\times10^{9+9}=10^{23}\)所以可以......
  • 多项式模板整理
    约定\(F[i]\)表示\(F(x)\)的\(i\)次项系数。多项式乘法基础详情见多项式乘法入门多项式求逆给出\(n\)次多项式\(F(x)\),求一个多项式\(G(x)\),满足\(F(x)G(x)\equiv1\pmod{x^n}\),\(G(x)\)每个系数对\(998244353\)取模。我们逐一递推,假设已知\(G[1...i-1]\),需......
  • 多项式小寄
    多项式小记目录目录多项式小记目录序什么是多项式多项式四则运算加法减法乘法除法\(FFT\)多项式的点值表达\(DFT\)单位根算法原理核心流程代码\(IDFT\)结论证明代码最后的实现融融没用的常数优化蝴蝶变换递归变递推(迭代)三步变两步破除封建迷信最终代码\(NTT\)咋来的原根定义性......
  • 多项式初步
    多项式初步目录多项式初步自己写的分治FFT/NTTPart1分治FFT/NTTPart2①.多项式求逆:②.多项式带余除法:③.多项式开根:④.多项式对数:⑤.多项式exp:⑥.多项式快速幂:模板基础操作MTT自己写的分治FFT/NTTPart1给定序列\(g_{1\dotsn-1}\),求序列\(f_{0\dotsn-1}\)。其中......
  • 数学:多项式
    拉格朗日插值快速傅里叶变换(FFT)已经不知道被这玩意劝退了多少次了。但理解之后其实不算很阴间的东西?前置知识多项式负数单位根快速傅里叶变换快速傅里叶逆变换快速数论变换(NTT/FNTT)前置知识FFT注意到FFT的运算到处都是又\(\cos\)又\(\sin\)的,有不小的精度问题......