/* Fast Fourier transformation Slozenost: Theta(n*logn) [n je stepen polinoma] */ #include using namespace std; namespace FFT { typedef complex base; const double pi=acos(-1.0); void DFT (vector &a, bool inverse) { int n=a.size(); for (int i=1, j=0;i>1; for (;j>=bit;bit>>=1) j-=bit; j+=bit; if (i convolute (vector a, vector b) { vector ret; int n=1; while (n fa(a.begin(), a.end()), fb(b.begin(), b.end()); fa.resize(n), fb.resize(n), ret.resize(n); DFT(fa, 0); DFT(fb, 0); for (int i=0;i a(n), b(m); for (int i=0;i c=FFT::convolute(a, b); for (auto xt: c) printf ("%d ", xt); return 0; }