給出兩個n位10進製整數x和y,你需要計算x*y。
第一行乙個正整數n。 第二行描述乙個位數為n的正整數x。 第三行描述乙個位數為n的正整數y。
輸出一行,即x*y的結果。13
412資料範圍:
n<=60000
fft模板題,做的時候注意處理一下進製和前導零就好
1 #include2 #include3 #include4 #include5#define n (240000+100)
6using
namespace
std;
7double pi=acos(-1.0);8
struct
complex915
}a[n],b[n];
16int n=-1,m=-1
,t,fn,l,r[n];
17char
ch;18
19 complex operator + (complex a,complex b)
20 complex operator - (complex a,complex b)
21 complex operator * (complex a,complex b)
22 complex operator / (complex a,double b)
2324
void fft(int n,complex *a,int
opt)
2540}41
}42if (opt==-1) for (int i=0; in;43}
4445
intmain()
4655
for (int i=0; i<=t; ++i)
5662
if (m==-1) m=0;63
if (n==-1) n=0
;64 fn=1;65
while (fn<=n+m) fn<<=1, l++;
66for (int i=0;ii)
67 r[i]=(r[i>>1]>>1) | ((i&1)<<(l-1
));68
69 fft(fn,a,1); fft(fn,b,1
);70
for (int i=0;i<=fn;++i)
71 a[i]=a[i]*b[i];
72 fft(fn,a,-1
);73
for (int i=n+m;i>=1;--i)
7478
int p=0;79
while ((int)(a[p].x+0.5)==0 && p;
80for (int i=p;i<=n+m;++i)
81 printf("
%d",(int)(a[i].x+0.5
));82 }
BZOJ 2179 FFT快速傅利葉(FFT)
description 給出兩個 n 位 10進製整數 x 和 y,你需要計算x y input 第一行乙個正整數 n 第二行描述乙個位數為 n的正整數 x 第三行描述乙個位數為 n的正整數 y n 60000 output 輸出一行,即x y 的結果。sample input1 3 4sample...
BZOJ 2179 FFT快速傅利葉
description 給出兩個n位10進製整數x和y,你需要計算x y。題目分析 fft裸題用來快速計算高精度的乘法,從n 2變成了n。其實不會,隨便抄了乙個模板。以後再慢慢學。include using namespace std const double pi acos 1.0 int rev...
BZOJ2179 FFT快速傅利葉
標籤 fft 題目傳送門 description 給出兩個n位10進製整數x和y,你需要計算x y。input 第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整數y。output 輸出一行,即x y的結果。sample input 1sample output 12...