NTT模板
NTT(快速数论变换)用到的各种素数及原根:
https://blog.csdn.net/hnust_xx/article/details/76572828
NTT多项式乘法模板
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- typedef long long LL;
- const LL mod=; //119*2^23+1 g=3
- const int N=(<<)+;
- const int g=;
- int rev[N];
- LL a[N],b[N];
- template<typename T>
- void read(T &x)
- {
- x=; char c=getchar();
- while(!isdigit(c)) c=getchar();
- while(isdigit(c)) { x=x*+c-''; c=getchar(); }
- }
- LL Pow(LL a,LL b)
- {
- LL res=;
- for(;b;a=a*a%mod,b>>=)
- if(b&) res=res*a%mod;
- return res;
- }
- void NTT(LL *a,int n,int f)
- {
- for(int i=;i<n;++i)
- if(i<rev[i]) swap(a[i],a[rev[i]]);
- for(int i=;i<n;i<<=)
- {
- LL wn=Pow(g,(mod-)/(i*));
- if(f<) wn=Pow(wn,mod-);
- for(int j=,p=i<<;j<n;j+=p)
- {
- LL w=;
- for(int k=;k<i;++k,w=w*wn%mod)
- {
- int x=a[j+k],y=w*a[j+k+i]%mod;
- a[j+k]=(x+y)%mod; a[j+k+i]=(x-y+mod)%mod;
- }
- }
- }
- if(f<)
- {
- LL inv=Pow(n,mod-);
- for(int i=;i<n;++i) a[i]=a[i]*inv%mod;
- }
- }
- int main()
- {
- int nn,mm;
- read(nn); read(mm);
- for(int i=;i<=nn;++i) read(a[i]);
- for(int i=;i<=mm;++i) read(b[i]);
- int l=,len=nn+mm;
- int n;
- for(n=;n<=len;n<<=) l++;
- for(int i=;i<n;++i) rev[i]=(rev[i>>]>>)|((i&)<<l-);
- NTT(a,n,);
- NTT(b,n,);
- for(int i=;i<n;++i) a[i]=a[i]*b[i]%mod;
- NTT(a,n,-);
- for(int i=;i<=len;++i) printf("%lld ",a[i]);
- }
NTT模板的更多相关文章
- 多项式FFT/NTT模板(含乘法/逆元/log/exp/求导/积分/快速幂)
自己整理出来的模板 存在的问题: 1.多项式求逆常数过大(尤其是浮点数FFT) 2.log只支持f[0]=1的情况,exp只支持f[0]=0的情况 有待进一步修改和完善 FFT: #include&l ...
- 【文文殿下】【洛谷】分治NTT模板
题解 可以计算每一项对后面几项的贡献,然后考虑后面每一项,发现这是一个卷积,直接暴力NTT就行了,发现它是一个有后效性的,我们选择使用CDQ分治. Tips:不能像通常CDQ分治一样直接 每次递归两边 ...
- FFT/NTT模板 既 HDU1402 A * B Problem Plus
@(学习笔记)[FFT, NTT] Problem Description Calculate A * B. Input Each line will contain two integers A a ...
- FFT NTT 模板
NTT: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; # ...
- 分治FFT/NTT 模板
题目要我们求$f[i]=\sum\limits_{j=1}^{i}f[i-j]g[j]\;mod\;998244353$ 直接上$NTT$肯定是不行的,我们不能利用尚未求得的项卷积 所以要用$CDQ$ ...
- 快速数论变换NTT模板
51nod 1348 乘积之和 #include <cmath> #include <iostream> #include <cstdio> #include &l ...
- NTT模板(无讲解)
#include<bits/stdc++.h>//只是在虚数部分改了一下 using namespace std; typedef long long int ll; ; ; ; ; ll ...
- 三模数NTT模板
求两个多项式的卷积对任意数p取模 两个好记的FNT模数: 5*2^25+1 7*2^26+1 原根都为3 //Achen #include<algorithm> #include<i ...
- 【模板】NTT
NTT模板 #include<bits/stdc++.h> using namespace std; #define LL long long const int MAXL=22; con ...
随机推荐
- Essential Netty in Action 《Netty 实战(精髓)》读书笔记一
NIO 最初是为 New Input/Output 的缩写.然而,Java 的 API 已经存在足够长的时间,它不再是新的.现在普遍使用的缩写来表示Nonblocking I/O (非阻塞 I/O). ...
- 震旦199打印机扫描A4文件
1.需要扫描的A4文件放入输稿器 2.使用数据线将打印机.电脑连接 3.在电脑中右键打印机,选择扫描功能 4.如下图,选择选项后,点击扫描即可
- 转帖--计算机网络基础知识大总汇 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是 ...
- Hive三种安装模式
- pgm17
这部分讨论决策理论与 PGM 的关系,一个主要的思路就是将决策与 PGM 的 inference 完美的融合在一起. MEU 为了引入决策理论中的 maximum expected utility 原 ...
- Maven整理
第一章 Maven安装 1.1 下载Maven库 下载地址:http://maven.apache.org/download.cgi 1.2 解压下载的库,认识Maven库目录 备注: 解压文件尽量不 ...
- [JOI2017] サッカー (Soccer)
原题题面看不懂的可以看下面的\(CJ\)版中文题面 $ $ \(CJ\)版: $ $ 这道题是\(JOI\)的\(T4\),放到联赛大概就是\(Day2,T3\)的难度 $ $ \(5\)分: 这一档 ...
- [CTSC2018] 假面 | 期望 DP
题目链接 LOJ 2552 Luogu P4564 考场上这道题我先是写了个70分暴力,然后发现似乎可以NTT,然鹅问题是--我没学过NTT,遂脑补之,脑补出来了,下午出成绩一看,卡成暴力分(70)- ...
- 3分钟上手log4net
1. config里 <log4net> <appender name="ConsoleAppender" type="log4net.Appender ...
- shell(3)-mysql主从监控shell
需要先明白数据库主从同步正常的标准是来查看两个线程Slave_IO和Slave_SQL两个线程的工作状态: #!/bin/bash #Check MySQL Slave's Runnning Stat ...