FFT快速傅立叶
Description
Input
Output
Sample Input
3
4
Sample Output
数据范围:
n<=60000
HINT
Source
FFT裸题
具体见算导
code:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 131072
#define pi 3.14159265358979323846
using namespace std;
char ch;
int m,n,ans[maxn];
bool ok;
struct comp{
double rea,ima;
void clear(){rea=ima=;}
comp operator +(const comp &x){return (comp){rea+x.rea,ima+x.ima};}
comp operator -(const comp &x){return (comp){rea-x.rea,ima-x.ima};}
comp operator *(const comp &x){return (comp){rea*x.rea-ima*x.ima,rea*x.ima+ima*x.rea};}
}a[maxn],b[maxn],c[maxn],tmp[maxn],w,wn;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
void read(comp *a){
for (int i=m-;i>=;i--){
for (ch=getchar();!isdigit(ch);ch=getchar());
a[i].rea=ch-'';
}
}
void write(int *a){
int i;
for (i=n-;i>=&&!a[i];i--);
if (i<){puts("");return;}
for (;i>=;i--) printf("%d",(int)a[i]);
puts("");
}
void fft(comp *a,int st,int siz,int step,int op){
if (siz==) return;
fft(a,st,siz>>,step<<,op),fft(a,st+step,siz>>,step<<,op);
int x=st,x1=st,x2=st+step;
w=(comp){,},wn=(comp){cos(op**pi/siz),sin(op**pi/siz)};
for (int i=;i<(siz>>);i++,x+=step,x1+=(step<<),x2+=(step<<),w=w*wn)
tmp[x]=a[x1]+(w*a[x2]),tmp[x+(siz>>)*step]=a[x1]-(w*a[x2]);
for (int i=st;siz;i+=step,siz--) a[i]=tmp[i];
}
int main(){
read(m),n=;
while (n<(m<<)) n<<=;
read(a),read(b);
fft(a,,n,,),fft(b,,n,,);
for (int i=;i<n;i++) c[i]=a[i]*b[i];
fft(c,,n,,-);
for (int i=;i<n;i++) ans[i]=(int)round(c[i].rea/(1.0*n));
for (int i=;i<n;i++) ans[i+]+=ans[i]/,ans[i]%=;
write(ans);
system("pause");
return ;
}
FFT快速傅立叶的更多相关文章
- BZOJ 2179: FFT快速傅立叶
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2923 Solved: 1498[Submit][Status][Di ...
- 【bzoj2179】FFT快速傅立叶 FFT模板
2016-06-01 09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...
- 【BZOJ 2179】 2179: FFT快速傅立叶 (FFT)
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3308 Solved: 1720 Description 给出两个n位 ...
- bzoj 2179: FFT快速傅立叶 -- FFT
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MB Description 给出两个n位10进制整数x和y,你需要计算x*y. Input ...
- 【BZOJ2179】FFT快速傅立叶
[BZOJ2179]FFT快速傅立叶 Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位 ...
- [bzoj2179]FFT快速傅立叶_FFT
FFT快速傅立叶 bzoj-2179 题目大意:给出两个n位10进制整数x和y,你需要计算x*y. 注释:$1\le n\le 6\times 10^4$. 想法: $FFT$入门题. $FFT$实现 ...
- 【CodeVS 3123】高精度练习之超大整数乘法 &【BZOJ 2197】FFT快速傅立叶
第一次写法法塔,,,感到威力无穷啊 看了一上午算导就当我看懂了?PS:要是机房里能有个清净的看书环境就好了 FFT主要是用了巧妙的复数单位根,复数单位根在复平面上的对称性使得快速傅立叶变换的时间复杂度 ...
- BZOJ 2179 FFT快速傅立叶 题解
bzoj 2179 Description 给出两个n位10进制整数x和y,你需要计算x*y. [题目分析] 高精裸题.练手. [代码] 1.手动高精 #include<cstdio> # ...
- FFT快速傅立叶变换的工作原理
实数DFT,复数DFT,FFTFFT是计算DFT的快速算法,但是它是基于复数的,所以计算实数DFT的时候需要将其转换为复数的格式,下图展示了实数DFT和虚数DFT的情况,实数DFT将时域中N点信号转换 ...
- HDU-1402 A * B Problem Plus FFT(快速傅立叶变化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 一般的的大数乘法都是直接模拟乘法演算过程,复杂度O(n^2),对于这题来说会超时.乘法的过程基本 ...
随机推荐
- Chrome启动参数的配置问题的补充
一.当Chrome浏览器不支持本地AJAX请求时,会出现AJAX跨域问题,这时候我们就要配置相应的启动参数使得浏览器可以访问本地文件: 配置参数为:--allow-file-access-from-f ...
- Openstack Ceilometer监控项扩展
Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘.网络.instance.本文在现有监控项的基础 ...
- String Problem - HDU 3374 (kmp+最大最小表示)
题目大意:有一个字符串长度为N的字符串,这个字符串可以扩展出N个字符串,并且按照顺序编号,比如串 ” SKYLONG “ SKYLONG 1 KYLONGS 2 YLONGSK 3 LONGSKY ...
- Struts2获取request三种方法
Struts2获取request三种方法 struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 在Actio ...
- 布隆过滤器的java实现
package com.kaikeba.data.jobspider.util; import java.util.BitSet; public class Bloomfilter { private ...
- Android的adb命令使用以及在DOS的一系列操作
adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用. adb有什么用?:借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作, ...
- UNIX编程之冲洗内存流与null追加策略(APUE F5-15)
博文链接:http://haoyuanliu.github.io/2016/04/29/mysql/ 对,我是来骗访问量的!O(∩_∩)O~~ 最近一直在拜读APUE(Advanced Program ...
- 第七讲:HTML5中的canvas两个小球全然弹性碰撞
<html> <head> <title>小球之间的碰撞(全然弹性碰撞)</title> <script src="../js/jsce ...
- [PWA] 13. New db and object store
Create a db: import idb from 'idb'; var dbPromise = idb.open('test-db', 2, function (upgradeDb) { sw ...
- Qt应用中检测内存泄露——VLD
本文简要描述一下在Qt应用中使用VLD来检测内存泄露.本次测试环境:QtCreator2.3 + Qt4.7.4-vs2008 + VS2008 Express. 1.下载并安装:VLD-2.2: h ...