hdu 1402 A * B Problem Plus[【FFT】
来源:互联网 发布:mac中照片的存储位置 编辑:程序博客网 时间:2024/05/17 18:46
这是一道FFT模板题,然而菜鸟还是WA好多发。。。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<map>#include<string>#include<queue>#include<vector>#include<list>#include<bitset>//#pragma comment(linker,"/STACK:1024000000,1024000000")using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define N 200005const double PI = acos(-1.0);struct complex{ double r,i; complex(double _r = 0,double _i = 0) { r = _r; i = _i; } complex operator +(const complex &b) { return complex(r+b.r,i+b.i); } complex operator -(const complex &b) { return complex(r-b.r,i-b.i); } complex operator *(const complex &b) { return complex(r*b.r-i*b.i,r*b.i+i*b.r); }};void change(complex y[],int len){ int i,j,k; for(i = 1, j = len/2;i < len-1;i++) { if(i < j)swap(y[i],y[j]); k = len/2; while( j >= k) { j -= k; k /= 2; } if(j < k)j += k; }}void fft(complex y[],int len,int on){ change(y,len); for(int h = 2;h <= len;h <<= 1) { complex wn(cos(-on*2*PI/h),sin(-on*2*PI/h)); for(int j = 0;j < len;j += h) { complex w(1,0); for(int k = j;k < j+h/2;k++) { complex u = y[k]; complex t = w*y[k+h/2]; y[k] = u+t; y[k+h/2] = u-t; w = w*wn; } } } if(on == -1) for(int i = 0;i < len;i++) y[i].r /= len;}complex x1[N],x2[N];char a[N/4],b[N/4];int num[N];int main(){ while(~scanf("%s%s",a,b)) { int len1=strlen(a); int len2=strlen(b); int l=1; while(l<len1+len2) l<<=1; for(int i=len1-1;i>=0;i--) x1[i]=complex(a[len1-i-1]-'0',0); for(int i=len1;i<l;i++) x1[i]=complex(0,0); for(int i=len2-1;i>=0;i--) x2[i]=complex(b[len2-i-1]-'0',0); for(int i=len2;i<l;i++) x2[i]=complex(0,0); fft(x1,l,1); fft(x2,l,1); for(int i=0;i<l;i++) x1[i]=x1[i]*x2[i]; fft(x1,l,-1); for(int i=0;i<l;i++) num[i]=x1[i].r+0.5; for(int i=0;i<l;i++) { num[i+1]+=num[i]/10; num[i]%=10; } l=len1+len2-1; int f=0; for(int i=l;i>=0;i--) { if(!f&&num[i]==0) continue; f=1; printf("%d",num[i]); } if(!f) puts("0"); else puts(""); } return 0;}
0 0
- hdu 1402 A * B Problem Plus FFT
- HDU 1402 A * B Problem Plus FFT
- [HDU 1402]A * B Problem Plus(FFT)
- HDU 1402 A * B Problem Plus FFT
- 【HDU】1402 A * B Problem Plus 【FFT】
- 【HDU】1402 A * B Problem Plus 【FFT】
- HDU 1402 A * B Problem Plus FFT
- hdu 1402 A * B Problem Plus[【FFT】
- HDU 1402 A * B Problem Plus FFT
- hdu 1402 A * B Problem Plus(FFT)
- [HDU]1402 A * B Problem Plus [FFT]
- hdu 1402 A * B Problem Plus(FFT)
- HDU 1042 A * B Problem Plus [FFT]
- hdu - 1402 - A * B Problem Plus(FFT)
- HDU 1402 A * B Problem Plus (FFT模板题)
- hdu 1402 A * B Problem Plus(fft)
- hdu 1402 A * B Problem Plus 快速傅里叶变换/FFT
- hdu 1402 A * B Problem Plus (FFT + 大数相乘)
- 一个有广告的纸杯子的测试用例设计(黑盒测试用例设计)
- C#控制台基础 C#中引用类型有哪些
- 中介者模式
- Android Support Design库之AppBarLayout
- Intent和PendingIntent
- hdu 1402 A * B Problem Plus[【FFT】
- MySQL基本概念
- linux常用命令和文件操作命令
- 单片机小项目总结
- 51Nod 1393 0和1相等串
- 方法重写与方法重载 静态
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- Google Chrome v53.0.2785.89
- CodeBlocks配置VS2013编译器并运行OpenCV