https://www.luogu.com.cn/problem/P4238

#include<bits/stdc++.h>
using namespace std;        //NTT模板
typedef long long ll;const int maxn=1e5+5;
const int MOD=998244353; //模数
const int G=3; //原根int limit,bit,n;
int wz[maxn<<2];
ll a[maxn<<2],b[maxn<<2],tmp[maxn<<2];inline ll qpow(ll x,ll y)
{ll t1=x,t2=1;while(y){if(y&1)t2=(t1*t2)%MOD;t1=(t1*t1)%MOD;y>>=1;}return t2;
}void NTT(ll *A,int inv)
{for(int i=0;i<limit;i++)if(i<wz[i])swap(A[i],A[wz[i]]);ll gn,t1,t2;for(int mid=1;mid<limit;mid<<=1){gn=qpow(G,(MOD-1)/(mid<<1));if(inv==-1)gn=qpow(gn,MOD-2);for(int i=0;i<limit;i+=mid<<1){ll g=1;for(int j=0;j<mid;j++,g=g*gn%MOD){t1=A[i+j];t2=g*A[i+mid+j]%MOD;A[i+j]=(t1+t2)%MOD;A[i+mid+j]=(t1-t2+MOD)%MOD;}}}
}void poly_inv(ll *A,ll *B,ll deg)//deg表示多项式的度 即最高次数
{if(deg==1){B[0]=qpow(A[0],MOD-2);return ;}poly_inv(A,B,(deg+1)>>1);bit=0,limit=1;while(limit<=(deg<<1)){++bit;limit<<=1;}for(int i=0;i<limit;i++)wz[i]=(wz[i>>1]>>1)|((i&1)<<(bit-1));for(int i=0;i<deg;i++)tmp[i]=A[i];for(int i=deg;i<limit;i++)tmp[i]=0;for(int i=(deg+1)>>1;i<limit;i++)B[i]=0;NTT(tmp,1);NTT(B,1);for(int i=0;i<limit;i++)B[i]=B[i]*(2ll-tmp[i]*B[i]%MOD+MOD)%MOD;NTT(B,-1);ll inv=qpow(limit,MOD-2);for(int i=0;i<limit;i++)B[i]=B[i]*inv%MOD;
}int main()
{scanf("%d",&n);for(int i=0;i<n;i++)scanf("%lld",&a[i]);poly_inv(a,b,n);printf("%lld",b[0]);for(int i=1;i<n;i++)printf(" %lld",b[i]);return 0;
}

洛谷 P4238 【模板】多项式乘法逆相关推荐

  1. P4239 任意模数多项式乘法逆(多项式/ MTT)

    P4239 任意模数多项式乘法逆 这个题目简直就是毒瘤,不过还好我们可以使用vector封装要不然真的没法看,现在我们就会用vector封装MTT了,然后有一个代码细节就是这里的求逆还是在模意义下的, ...

  2. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  3. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  4. 洛谷P4238 【模板】多项式求逆(NTT)

    传送门 学习了一下大佬的->这里 已知多项式$A(x)$,若存在$A(x)B(x)\equiv 1\pmod{x^n}$ 则称$B(x)$为$A(x)$在模$x^n$下的逆元,记做$A^{-1} ...

  5. 【洛谷3157】[CQOI2011] 动态逆序对(CDQ分治)

    点此看题面 大致题意: 给你一个从\(1\)到\(n\)的排列,问你每次删去一个元素后剩余的逆序对个数. 关于\(80\)分的树套树 为了练树套树,我找到了这道题目. 但悲剧的是,我的 线段树套\(T ...

  6. 洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)

    https://www.luogu.com.cn/problem/P1919 题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a ...

  7. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  8. 强连通分量:洛谷P3387 模板:缩点

    传送门 顾名思义,模板awa #include <cstdio> #include <cstring> #include <cmath> #include < ...

  9. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

  10. 【洛谷】P1067 多项式输出【模拟】

    https://www.luogu.org/problemnew/show/1067 题目: 题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i 次项,ai 称为 i 次项的系 ...

最新文章

  1. leetcode--对称二叉树--python
  2. JGG:华中师大蒋兴鹏组-不同稀疏水平信号的微生物组关联检验方法
  3. 中班机器人上课视频_中班机器人律动公开课
  4. windows窗体继承问题
  5. Mongodb 集群加keyFile认证
  6. Junit4 简单教程
  7. [react-router] React-Router 4的switch有什么用?
  8. pycharm 操作的一些设置,记录下
  9. 华为鸿蒙os系统电脑有吗,华为全面启用鸿蒙OS系统!所有华为终端设备:默认搭载鸿蒙系统...
  10. htaccess有什么用
  11. 剑指offer——面试题28:字符串的排列
  12. Freemarker商品详情页静态化服务调用处理
  13. win10自带看图工具找不到了咋办
  14. Flink窗口起始时间计算
  15. 基于C语言的简单小游戏-(扫雷)
  16. 数据结构-二叉树的顺序存储
  17. 科普:SAS是什么语言
  18. df命令、du命令、磁盘分区
  19. PCCS-RGB变换表
  20. 【历史上的今天】11 月 7 日:图灵奖女性得主诞生;Twitter 告别 140 字符时代;首位中国 AI 主播

热门文章

  1. c语言 switch整型,c语言switch型别强制转换的问题。
  2. LeetCode第82场双周赛
  3. java ios push_java向IOS设备推送消息
  4. matlab solve 矩阵,在Matlab中求解矩阵DAE系统
  5. Unity运行失败,Unsafe code may only appear if compiling with /unsafe
  6. ANN之乘积量化PQ
  7. 拥塞控制算法(Congestion Control)对比
  8. 惠普服务器修改ilo密码,HP 修改ILO密码
  9. 5个适合提升自己的自学网站,每一个都很强大, 适合职场人自我提升的学习网站,利用起来,离加薪更近一步
  10. 职场中该如何自学?看书/看视频