传送门

FFT

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
#define MN 2097152
const double Pi=std::acos(-1.);
struct complex
{
double x,y;
complex(double x=0,double y=0):x(x),y(y){}
inline complex operator+(const complex& o)const{return complex(x+o.x,y+o.y);}
inline complex operator-(const complex& o)const{return complex(x-o.x,y-o.y);}
inline complex operator*(const complex& o)const{return complex(x*o.x-y*o.y,x*o.y+y*o.x);}
inline void swap(complex& o){register complex t=o;o=(*this);*this=t;}
}a[MN],b[MN];
int N,di,pos[MN];
inline void FFT(complex *a,int type)
{
register int i,j,p,k;
for(i=0;i<N;++i)if(i<pos[i])a[i].swap(a[pos[i]]);
for(i=1;i<N;i<<=1)
{
complex wn(cos(Pi/i),type*sin(Pi/i));
for(p=i<<1,j=0;j<N;j+=p)
{
complex w(1,0);
for(k=0;k<i;++k,w=w*wn)
{
complex X=a[j+k],Y=w*a[j+i+k];
a[j+k]=X+Y;a[j+i+k]=X-Y;
}
}
}
}
int main()
{
register int n,m,i;
n=read();m=read();
for(i=0;i<=n;++i) a[i].x=read();
for(i=0;i<=m;++i) b[i].x=read();
for(N=1;N<=n+m;N<<=1,di++);
for(i=0;i<N;++i) pos[i]=(pos[i>>1]>>1)|((i&1)<<(di-1));
FFT(a,1);FFT(b,1);
for(i=0;i<N;++i) a[i]=a[i]*b[i];
FFT(a,-1);
for(i=0;i<=n+m;++i) printf("%d ",(int)(a[i].x/N+.5));
return 0;
}

NTT

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define swap(x,y) (x^=y^=x^=y)
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
#define MN 2097152
int N,di,pos[MN];
ll a[MN],b[MN],invN;
#define mod 998244353
#define g 3
#define invg 332748118
inline ll fpow(ll x,int m){ll res=1;for(;m;m>>=1,x=x*x%mod) (m&1)?res=res*x%mod:0;return res;}
inline void NTT(ll *a,int type)
{
register int i,j,p,k;
for(i=0;i<N;++i)if(i<pos[i]) swap(a[i],a[pos[i]]);
for(i=1;i<N;i<<=1)
{
ll wn=fpow(type>0?g:invg,(mod-1)/(i<<1));
for(p=i<<1,j=0;j<N;j+=p)
{
ll w=1;
for(k=0;k<i;++k,w=w*wn%mod)
{
ll X=a[j+k],Y=w*a[j+i+k]%mod;
a[j+k]=(X+Y)%mod;a[j+i+k]=(X-Y+mod)%mod;
}
}
}
}
int main()
{
register int n,m,i;
n=read();m=read();
for(i=0;i<=n;++i) a[i]=(read()+mod)%mod;
for(i=0;i<=m;++i) b[i]=(read()+mod)%mod;
for(N=1;N<=n+m;N<<=1,di++);
for(i=0;i<N;++i) pos[i]=(pos[i>>1]>>1)|((i&1)<<(di-1));
NTT(a,1);NTT(b,1);
for(i=0;i<N;++i) a[i]=a[i]*b[i]%mod;
NTT(a,-1);invN=fpow(N,mod-2);
for(i=0;i<=n+m;++i) printf("%lld ",a[i]*invN%mod);
return 0;
}

Blog来自PaperCloud,未经允许,请勿转载,TKS!

[luogu 3803]【模板】多项式乘法的更多相关文章

  1. 洛谷.3803.[模板]多项式乘法(FFT)

    题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...

  2. 洛谷.3803.[模板]多项式乘法(NTT)

    题目链接:洛谷.LOJ. 为什么和那些差那么多啊.. 在这里记一下原根 Definition 阶 若\(a,p\)互质,且\(p>1\),我们称使\(a^n\equiv 1\ (mod\ p)\ ...

  3. [模板] 多项式: 乘法/求逆/分治fft/微积分/ln/exp/幂

    多项式 代码 const int nsz=(int)4e5+50; const ll nmod=998244353,g=3,ginv=332748118ll; //basic math ll qp(l ...

  4. luogu P2553 [AHOI2001]多项式乘法

    传送门 这题就是普及暴力模拟板子FFT板子,只要把多项式读入进来FFT一下就好了(不会的右转P3803) 重点是读入,我本以为这个字符串里到处都有空格,这里提供一种简单思路: 因为里面可能有空格,所以 ...

  5. P3803 [模板] 多项式乘法 (FFT)

    Rt 注意len要为2的幂 #include <bits/stdc++.h> using namespace std; const double PI = acos(-1.0); inli ...

  6. 【luogu P3803】【模板】多项式乘法(FFT)

    [模板]多项式乘法(FFT) 题目链接:luogu P3803 题目大意 给你两个多项式,要你求这两个多项式乘起来得到的多项式.(卷积) 思路 系数表示法 就是我们一般来表示一个多项式的方法: \(A ...

  7. FFT模板(多项式乘法)

    FFT模板(多项式乘法) 标签: FFT 扯淡 一晚上都用来捣鼓这个东西了...... 这里贴一位神犇的博客,我认为讲的比较清楚了.(刚好适合我这种复数都没学的) http://blog.csdn.n ...

  8. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...

  9. 洛谷P3803 【模板】多项式乘法 [NTT]

    题目传送门 多项式乘法 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: 第一行2个正整数n,m. 接下来一行n+1个数字, ...

  10. 洛谷P3803 【模板】多项式乘法(FFT)

    P3803 [模板]多项式乘法(FFT) 题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: ...

随机推荐

  1. 和我一起,重零开始学习Ant Design Pro开发解决方案(一)安装开发环境

    安装NODEJS 什么是NODEJS? 百度一下吧,这个真不知道,老码农,别笑话我: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome Jav ...

  2. Node学习之(第三章:art-template模板引擎的使用)

    前言 大家之前都有使用过浏览器中js模板引擎,其实在Node.js中也可以使用模板引擎,最早使用模板引擎的概念是在服务端新起的. art-template art-template是一款高性能的Jav ...

  3. EhLib使用全攻略

    使用 TDBSumList 组件   还记得以前有朋友问过这样一个问题:在 DBGrid 下如何像 Excel 一样能够做统计计算,实话说,使用 DBGrid 来做的话着实不易,不过现在有了这个咚咚, ...

  4. linux下安装grpc插件 (c++和go语言)

    在debian/ubuntu系统下,需要做如下准备操作: $ [sudo] apt-get install build-essential autoconf libtool pkg-config 如果 ...

  5. java sql: PrepareStatement

    参见菜鸟教程:JDBC 使用说明 增删改查: public class DbUtil { public static final String URL = "jdbc:mysql://loc ...

  6. 开发环境wamp3.06 + Zend studio 12 调试配置

    <?php $fileName = "php大师.test.php"; //补充程序,显示文件名(不包括扩展名) $start = strrpos($fileName, &q ...

  7. 分布式结构化存储系统-HBase访问方式

    分布式结构化存储系统-HBase访问方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. HBase提供了多种访问方式,包括HBase shell,HBase API,数据收集组件( ...

  8. k8s安装之nginx.yaml

    这里两个nginx.一个是用来测试最简单的集群的. 另一个是用来作grafana,prometheus,dashboard前端安全展示的. 简单版 apiVersion: apps/v1 kind: ...

  9. Django 定时任务

    pip install apscheduler==2.1.2 安装完成后,打开django web 项目的views.py 增加以下内容: from apscheduler.scheduler imp ...

  10. 《你们都是魔鬼吗》团队作业Beta冲刺---第一天

    团队作业Beta冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件 ...