NTT(快速数论变换)用到的各种素数及原根:

https://blog.csdn.net/hnust_xx/article/details/76572828

NTT多项式乘法模板

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4.  
  5. using namespace std;
  6.  
  7. typedef long long LL;
  8.  
  9. const LL mod=; //119*2^23+1 g=3
  10.  
  11. const int N=(<<)+;
  12.  
  13. const int g=;
  14.  
  15. int rev[N];
  16.  
  17. LL a[N],b[N];
  18.  
  19. template<typename T>
  20. void read(T &x)
  21. {
  22. x=; char c=getchar();
  23. while(!isdigit(c)) c=getchar();
  24. while(isdigit(c)) { x=x*+c-''; c=getchar(); }
  25. }
  26.  
  27. LL Pow(LL a,LL b)
  28. {
  29. LL res=;
  30. for(;b;a=a*a%mod,b>>=)
  31. if(b&) res=res*a%mod;
  32. return res;
  33. }
  34.  
  35. void NTT(LL *a,int n,int f)
  36. {
  37. for(int i=;i<n;++i)
  38. if(i<rev[i]) swap(a[i],a[rev[i]]);
  39. for(int i=;i<n;i<<=)
  40. {
  41. LL wn=Pow(g,(mod-)/(i*));
  42. if(f<) wn=Pow(wn,mod-);
  43. for(int j=,p=i<<;j<n;j+=p)
  44. {
  45. LL w=;
  46. for(int k=;k<i;++k,w=w*wn%mod)
  47. {
  48. int x=a[j+k],y=w*a[j+k+i]%mod;
  49. a[j+k]=(x+y)%mod; a[j+k+i]=(x-y+mod)%mod;
  50. }
  51. }
  52. }
  53. if(f<)
  54. {
  55. LL inv=Pow(n,mod-);
  56. for(int i=;i<n;++i) a[i]=a[i]*inv%mod;
  57. }
  58. }
  59.  
  60. int main()
  61. {
  62. int nn,mm;
  63. read(nn); read(mm);
  64. for(int i=;i<=nn;++i) read(a[i]);
  65. for(int i=;i<=mm;++i) read(b[i]);
  66. int l=,len=nn+mm;
  67. int n;
  68. for(n=;n<=len;n<<=) l++;
  69. for(int i=;i<n;++i) rev[i]=(rev[i>>]>>)|((i&)<<l-);
  70. NTT(a,n,);
  71. NTT(b,n,);
  72. for(int i=;i<n;++i) a[i]=a[i]*b[i]%mod;
  73. NTT(a,n,-);
  74. for(int i=;i<=len;++i) printf("%lld ",a[i]);
  75. }

NTT模板的更多相关文章

  1. 多项式FFT/NTT模板(含乘法/逆元/log/exp/求导/积分/快速幂)

    自己整理出来的模板 存在的问题: 1.多项式求逆常数过大(尤其是浮点数FFT) 2.log只支持f[0]=1的情况,exp只支持f[0]=0的情况 有待进一步修改和完善 FFT: #include&l ...

  2. 【文文殿下】【洛谷】分治NTT模板

    题解 可以计算每一项对后面几项的贡献,然后考虑后面每一项,发现这是一个卷积,直接暴力NTT就行了,发现它是一个有后效性的,我们选择使用CDQ分治. Tips:不能像通常CDQ分治一样直接 每次递归两边 ...

  3. FFT/NTT模板 既 HDU1402 A * B Problem Plus

    @(学习笔记)[FFT, NTT] Problem Description Calculate A * B. Input Each line will contain two integers A a ...

  4. FFT NTT 模板

    NTT: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; # ...

  5. 分治FFT/NTT 模板

    题目要我们求$f[i]=\sum\limits_{j=1}^{i}f[i-j]g[j]\;mod\;998244353$ 直接上$NTT$肯定是不行的,我们不能利用尚未求得的项卷积 所以要用$CDQ$ ...

  6. 快速数论变换NTT模板

    51nod 1348 乘积之和 #include <cmath> #include <iostream> #include <cstdio> #include &l ...

  7. NTT模板(无讲解)

    #include<bits/stdc++.h>//只是在虚数部分改了一下 using namespace std; typedef long long int ll; ; ; ; ; ll ...

  8. 三模数NTT模板

    求两个多项式的卷积对任意数p取模 两个好记的FNT模数: 5*2^25+1 7*2^26+1 原根都为3 //Achen #include<algorithm> #include<i ...

  9. 【模板】NTT

    NTT模板 #include<bits/stdc++.h> using namespace std; #define LL long long const int MAXL=22; con ...

随机推荐

  1. Essential Netty in Action 《Netty 实战(精髓)》读书笔记一

    NIO 最初是为 New Input/Output 的缩写.然而,Java 的 API 已经存在足够长的时间,它不再是新的.现在普遍使用的缩写来表示Nonblocking I/O (非阻塞 I/O). ...

  2. 震旦199打印机扫描A4文件

    1.需要扫描的A4文件放入输稿器 2.使用数据线将打印机.电脑连接 3.在电脑中右键打印机,选择扫描功能 4.如下图,选择选项后,点击扫描即可

  3. 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是 ...

  4. Hive三种安装模式

  5. pgm17

    这部分讨论决策理论与 PGM 的关系,一个主要的思路就是将决策与 PGM 的 inference 完美的融合在一起. MEU 为了引入决策理论中的 maximum expected utility 原 ...

  6. Maven整理

    第一章 Maven安装 1.1 下载Maven库 下载地址:http://maven.apache.org/download.cgi 1.2 解压下载的库,认识Maven库目录 备注: 解压文件尽量不 ...

  7. [JOI2017] サッカー (Soccer)

    原题题面看不懂的可以看下面的\(CJ\)版中文题面 $ $ \(CJ\)版: $ $ 这道题是\(JOI\)的\(T4\),放到联赛大概就是\(Day2,T3\)的难度 $ $ \(5\)分: 这一档 ...

  8. [CTSC2018] 假面 | 期望 DP

    题目链接 LOJ 2552 Luogu P4564 考场上这道题我先是写了个70分暴力,然后发现似乎可以NTT,然鹅问题是--我没学过NTT,遂脑补之,脑补出来了,下午出成绩一看,卡成暴力分(70)- ...

  9. 3分钟上手log4net

    1. config里 <log4net> <appender name="ConsoleAppender" type="log4net.Appender ...

  10. shell(3)-mysql主从监控shell

    需要先明白数据库主从同步正常的标准是来查看两个线程Slave_IO和Slave_SQL两个线程的工作状态: #!/bin/bash #Check MySQL Slave's Runnning Stat ...