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

题目背景

这是一道FFT模板题

题目描述

给定一个n次多项式F(x),和一个m次多项式G(x)。

请求出F(x)和G(x)的卷积。

输入输出格式

输入格式:

第一行2个正整数n,m。

接下来一行n+1个数字,从低到高表示F(x)的系数。

接下来一行m+1个数字,从低到高表示G(x))的系数。

输出格式:

一行n+m+1个数字,从低到高表示F(x)∗G(x)的系数。

输入输出样例

输入样例#1: 复制

1 2
1 2
1 2 1
输出样例#1: 复制

1 4 5 2

说明

保证输入中的系数大于等于 0 且小于等于9。

对于100%的数据: n, m \leq {10}^6n,m≤106, 共计20个数据点,2s。

数据有一定梯度。

空间限制:256MB

/*fft模板*/
#include<iostream>
#include<cstdio>
#include<cmath>
#define maxn 4000010
#define PI (acos(-1.0))
using namespace std;
int rd[maxn];
struct node{
double x,y;
node (double a=,double b=):x(a),y(b){}
node operator + (const node &p)
{return node (x+p.x,y+p.y);}
node operator - (const node &p)
{return node (x-p.x,y-p.y);}
node operator * (const node &p)
{return node (x*p.x-y*p.y,x*p.y+y*p.x);}
node operator / (const double &p)
{return node (x/p,y/p);}
}a[maxn],b[maxn];
void fft(node *a,int N,int f){
node wn,w,x,y;int i;
for(i=;i<N;i++)
if(rd[i]>i)swap(a[i],a[rd[i]]);
for(int k=;k<N;k<<=){
wn=node(cos(PI/k),f*sin(PI/k));
for(int j=;j<N;j+=k<<)
for(w=node(,),i=;i<k;i++,w=w*wn){
x=a[i+j];
y=a[i+j+k]*w;
a[i+j]=x+y;
a[i+j+k]=x-y;
}
}
if(f==-)for(int i=;i<N;i++)a[i]=a[i]/N;
}
int main(){
freopen("Cola.txt","r",stdin);
int N,M;
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++)scanf("%lf",&a[i].x);
for(int i=;i<=M;i++)scanf("%lf",&b[i].x);
M=N+M;N=;int l=;
while(N<=M)N<<=,l++;
for(int i=;i<N;i++)rd[i]=(rd[i>>]>>)|((i&)<<(l-));//进行反转
fft(a,N,),fft(b,N,);
for(int i=;i<N;i++)a[i]=a[i]*b[i];
fft(a,N,-);
for(int i=;i<=M;i++)
printf("%d ",int(a[i].x+0.5));
return ;
}

洛谷P3803 【模板】多项式乘法(FFT)的更多相关文章

  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. P3803 [模板] 多项式乘法 (FFT)

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

  4. 洛谷.4512.[模板]多项式除法(NTT)

    题目链接 多项式除法 & 取模 很神奇,记录一下. 只是主要部分,更详细的和其它内容看这吧. 给定一个\(n\)次多项式\(A(x)\)和\(m\)次多项式\(D(x)\),求\(deg(Q) ...

  5. 洛谷.4238.[模板]多项式求逆(NTT)

    题目链接 设多项式\(f(x)\)在模\(x^n\)下的逆元为\(g(x)\) \[f(x)g(x)\equiv 1\ (mod\ x^n)\] \[f(x)g(x)-1\equiv 0\ (mod\ ...

  6. 洛谷 P4512 [模板] 多项式除法

    题目:https://www.luogu.org/problemnew/show/P4512 看博客:https://www.cnblogs.com/owenyu/p/6724611.html htt ...

  7. 洛谷 P4238 [模板] 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4238 看博客:https://www.cnblogs.com/xiefengze1/p/9107752.html ...

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

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

  9. 洛谷p3803 FFT入门

    洛谷p3803 FFT入门 ps:花了我一天的时间弄懂fft的原理,感觉fft的折半很神奇! 大致谈一谈FFT的基本原理: 对于两个多项式的卷积,可以O(n^2)求出来(妥妥的暴力) 显然一个多项式可 ...

  10. 洛谷P3373 [模板]线段树 2(区间增减.乘 区间求和)

    To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格 ...

随机推荐

  1. 用一句SQL取出第 m 条到第 n 条记录的方法

    1 --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)2 3 SELECT TOP n-m+1 * 4 FROM Table 5 WHERE (id NOT IN (SEL ...

  2. Spring源码分析_01_ idea搭建spring源码阅读环境

    二.参考资料 1.Intellij Idea如何导入spring源码

  3. IO流 相关基础积累

    一个整型32位字节. 写入到流.? 为什么要按十六进制输出到控制台?

  4. 【leetcode刷题笔记】ZigZag Conversion

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  5. [原]NYOJ-开灯问题-77

    大学生程序代写 //http://acm.nyist.net/JudgeOnline/problem.php?pid=77 /*题目77题目信息运行结果本题排行讨论区开灯问题 时间限制:3000 ms ...

  6. 一次spark卡顿分析

    在104上面执行,经常会发生卡到了如下一句话: storage.BlockManagerInfo: Added broadcast_8_piece0 当再次卡顿的时候,我直接退出,然后通过yarn看后 ...

  7. POJ1442:Black Box

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1442 用对顶堆维护第\(k\)小 ...

  8. Azure Public IP DNS域名

    在某些环境下,PIP是Azure上的一种比较好的解决方案处理一些特殊的环境.比如大量的端口需要打开.向外部的访问非常多等等. 但目前,Azure的Reserved IP address不用应用到PIP ...

  9. js基础之变量类型

    1.NAN(Not a number) 不是一个数字 自身:console.log(NaN==NaN)和console.log(NaN===NaN)返回值都是false; 其他函数,isNaN()可用 ...

  10. 人物-IT-张朝阳:张朝阳

    ylbtech-人物-IT-张朝阳:张朝阳 张朝阳,1964年10月31日出生在陕西省西安市,搜狐公司董事局主席兼首席执行官.1986年毕业于清华大学物理系,并于同年考取李政道奖学金赴美留学.1993 ...