Back board Dafa Roar
#include <algorithm>#include <iostream>#include <complex>#include <cstdlib>#include <cstring>#include <cstdio>#include <vector>#include <queue>#include <ctime>#include <cmath>#include <map>#include <set>#define N 1433333using namespace STD;typedef Complex<Double> E;Const DoublePi=ACOs(-1);intN,m,r[n],l,w[n]; E A[n],b[n];CharA[n],b[n];voidFFT (E *a,intf) { for(intI=0; i<n;i++)if(I<r[i]) swap (a[i],a[r[i]); for(intI=1; i<n;i<<=1) {E WN (Cos(pi/i), f*Sin(pi/i)); for(intk=0; k<n;k+= (i<<1)) {E W (1,0); for(intj=0; j<i;j++,w*=wn) {E x=a[j+k],y=w*a[j+k+i]; A[j+k]=x+y;a[j+k+i]=x-y; } } }if(f==-1) for(intI=0; i<n;i++) A[i]/=n;}intMain () {scanf("%d%s%s", &n,a+1, B +1); for(intI=0; i<n;i++) a[i]=a[n-i]-' 0 '; for(intI=0; i<n;i++) b[i]=b[n-i]-' 0 '; m=2*n-2; for(n=2; n<=m;n<<=1, l++); for(intI=1; i<n;i++) r[i]= (r[i>>1]>>1)| ((i&1) <<l); FFT (A,1), FFT (b,1); for(intI=0; i<n;i++) A[i]*=b[i]; FFT (a,-1); for(intI=0; i<n;i++) w[i]= (int) (A[i].real () +0.1); for(intI=0; i<=m;i++)if(w[i]>=Ten) {w[i+1]+=w[i]/Ten, w[i]%=Ten;if(i==m) m++; } for(inti=m;i>=0; i--)printf("%d", W[i]);return 0;}
2179:fft Fast Fourier | Fast Fourier transform