[省选前题目整理][UOJ 34]多项式乘法(FFT)
来源:互联网 发布:java spring mvc面试题 编辑:程序博客网 时间:2024/06/18 10:12
题目链接
http://uoj.ac/problem/34
思路
裸的FFT模板题。
代码
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <complex>#define MAXN 1000000#define PI 3.1415926535897384626using namespace std;typedef complex<double> Complex;inline void rev(Complex a[],int n){ for(int i=1,j=n/2,k;i<n-1;i++) { if(i<j) swap(a[i],a[j]); k=n/2; while(j>=k) { j-=k; k>>=1; } if(j<k) j+=k; }}inline void FFT(Complex a[],int n,int flag){ rev(a,n); for(int i=1;i<n;i<<=1) { Complex wn=Complex(cos(PI/i),flag*sin(PI/i)); for(int j=0;j<n;j+=(i<<1)) { Complex w=Complex(1,0); for(int k=0;k<i;k++,w=w*wn) { Complex x=a[j+k],y=w*a[j+k+i]; //!!!!!! a[j+k]=x+y; a[j+k+i]=x-y; } } } if(flag==-1) for(int i=0;i<n;i++) a[i]=Complex(a[i].real()/n,a[i].imag());}Complex a[MAXN],b[MAXN];int main(){ int n,m; scanf("%d%d",&n,&m); n++,m++; for(int i=0;i<n;i++) scanf("%lf",&a[i].real()); for(int i=0;i<m;i++) scanf("%lf",&b[i].real()); int N=1,k=0; //2^k=N for(;N<=n+m-1;N<<=1,k++); FFT(a,N,1); FFT(b,N,1); for(int i=0;i<N;i++) a[i]*=b[i]; //!!!!!! FFT(a,N,-1); for(int i=0;i<n+m-1;i++) printf("%d ",(int)(a[i].real()+0.5)); printf("\n"); return 0;}
0 0
- [省选前题目整理][UOJ 34]多项式乘法(FFT)
- [UOJ 34]多项式乘法(FFT)
- 【FFT优化】[UOJ#34]多项式乘法
- 【UOJ#34】 多项式乘法(FFT && NTT)
- [FFT 模板题] UOJ #34 多项式乘法
- [UOJ#34]多项式乘法(FFT)
- [uoj 34 多项式乘法] FFT&NTT 模板
- uoj 34 多项式乘法(fft入门)
- UOJ 34 多项式乘法(FFT)
- [UOJ#34]多项式乘法(FFT)
- [uoj 34 多项式乘法] FFT&NTT 模板
- [挖坑][uoj]多项式乘法 FFT
- UOJ #34 多项式乘法 FFT快速傅立叶变换
- UOJ#34 多项式乘法(FFT模板题)
- 【UOJ 34】多项式乘法
- [UOJ#34]多项式乘法
- UOJ 34 多项式乘法
- UOJ 34 多项式乘法
- 导出Excel
- java swing difference between Jframe and JPanel
- 外推 用的.js
- 常见错误:java.lang.NumberFormatException: For input string: "6 "
- 除去程序打开短暂黑屏的问题
- [省选前题目整理][UOJ 34]多项式乘法(FFT)
- UIView的Animaltion
- 谈谈对Spring IOC的理解
- 无孔不入的Android侵入Windows系统
- 扫描器之王-----nmap教程
- JProfiler监控内存
- MySQL随机获取一条数据
- 第六周阅读3
- NodeJS连接Redis:安装及开机自动启动设置