Radix-2 Iterative-FFT
来源:互联网 发布:知乎三国和战国 编辑:程序博客网 时间:2024/06/03 14:36
#include<bits/stdc++.h>using namespace std;const double PI = acos(-1.0);const int maxn = 300000 + 10;int n, m, base;int c[maxn], rev[maxn];complex<double> a[maxn], b[maxn], p[maxn];int read() { int n = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while(ch >='0' && ch <='9') { n = n * 10 + ch - 48; ch = getchar(); } return n * f;}void init() { int dis = 0; for(base = 1; base <= n + m; base <<= 1) ++dis; for(int i=0; i<=base; i++) rev[i] = (rev[i>>1] >> 1) | ((i & 1) << (dis - 1));}void FFT(complex<double> x[], int n, int type) { for(int i=0; i<n; ++i) if(i < rev[i]) swap(x[i], x[rev[i]]); for(int s=1; 1 << s <= n; ++s) { int m = 1 << s; complex<double> wm(cos(type * 2 * PI / m), sin(type * 2 * PI / m)); for(int k=0; k < n; k += m) { complex<double> w(1, 0); for(int j=0; j < m >> 1; ++j) { complex<double> u = x[k + j]; complex<double> t = x[k + j + m / 2] * w; x[k + j] = u + t; x[k + j + m / 2] = u - t; w *= wm; } } }}int main() {#ifndef ONLINE_JUDGE freopen("data.txt", "r", stdin); freopen("ans.txt", "w", stdout); #endif scanf("%d%d", &n, &m); for(int i=0; i<=n; ++i) a[i] = read(); for(int i=0; i<=m; ++i) b[i] = read(); init(); FFT(a, base, 1); FFT(b, base, 1); for(int i=0; i<base; ++i) p[i] = a[i] * b[i]; FFT(p, base, -1); for(int i=0; i<n + m + 1; ++i) c[i] = p[i].real() / base + 0.1; for(int i=0; i<n + m + 1; ++i) printf("%d%c", c[i], i == n + m ? '\n' : ' '); return 0;}
0 1
- Radix-2 Iterative-FFT
- Radix-2 分治FFT
- Radix-2 Recursive-FFT
- Radix-2 迭代FFT
- Radix-2 迭代FFT
- FFT原理及实现(Radix-2)
- FFT原理及实现(Radix-2)
- (收藏)FFT原理及实现(Radix-2)
- Radix
- Radix
- 基数(radix)树 2
- FFT
- "fft"
- FFT
- fft
- FFT
- fft
- FFT
- 使用EmBitz编译mbed提示mbed_wait_api.c:(.text.wait+0x0): multiple definition of `wait'
- ConcurrentHashMap从jdk1.7到jdk1.8的变化
- Hello,my new world
- Linux /dev目录详解------/dev/null和/dev/zero
- HDU 1024 Max Sum Plus Plus DP
- Radix-2 Iterative-FFT
- 社会统计分析—统计推断-估值
- 子线程 run() 函数中,调用其他函数
- Spring中自动任务的实现
- 深入了解C++继承
- HDU 5319 Painter(模拟 + 规律)——2015 Multi-University Training Contest 3
- 怎样用conda安装opencv
- python从零开始学习(三)--os模块
- HTTP缓存