time limit: 10 sec memory limit: 259 mb
submit: 3079 solved: 1581
給出兩個n位10進製整數x和y,你需要計算x*y。
第一行乙個正整數n。 第二行描述乙個位數為n的正整數x。 第三行描述乙個位數為n的正整數y。
輸出一行,即x*y的結果。13
412資料範圍:
n<=60000
fftfft真是精妙,我選擇背**
1 #include2 #include3 #include4 #include5 #include6 #include7#define pi acos(-1)
8using
namespace
std;
9const
int mxn=(1
<<17)+7
;10 typedef complexcd;
11char
sa[mxn],sb[mxn];
12cd a[mxn],b[mxn];
13int
rev[mxn],c[mxn];
14int n,l=0;15
double fft(cd* a,int
flag)29}
30}31if(flag==-1)for(int i=0;in;32}
33void multi()
34int
main()
40int m=n<<1;41
for(n=1;n1)l++;
42for(i=0;i//
預處理反轉陣列
43 rev[i]=(rev[i>>1]>>1)|((i&1)<<(l-1
));44
}45 fft(a,1);fft(b,1);//
係數表示式轉為點陣表示式
46multi();
47 fft(a,-1);//
點陣表示式轉為係數表示式
48for(i=0;iint)(a[i].real()+0.1
);49
for(i=0;i)
50if(c[i]>=10)
51else
if(!c[i] && i==m-1)m--;
52for(i=m-1;i>=0;i--)printf("%d"
,c[i]);
53return0;
54 }
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...
BZOJ2179 FFT快速傅利葉 FFT
給出兩個n位10進製整數x和y,你需要計算x y。第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整數y。輸出一行,即x y的結果。13 412資料範圍 n 60000 fft模板題,做的時候注意處理一下進製和前導零就好 1 include2 include3 inc...
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...