bzoj 2179 FFT快速傅里叶
来源:互联网 发布:中国建筑业数据库 编辑:程序博客网 时间:2024/06/16 02:31
真 · 背板子。好像是用到了分治思想。
#include<cmath>#include<cstdio>#include<cstring>#include<complex>#include<iostream>using namespace std;double pi=acos(-1);typedef complex<double> E;E a[140005],b[140005];void fft(E *x,int n,int type){ if(n==1) return ; E l[n>>1],r[n>>1]; for(int i=0;i<n;i+=2) l[i>>1]=x[i],r[i>>1]=x[i+1]; fft(l,n>>1,type);fft(r,n>>1,type); E wn(cos(2*pi/n),sin(type*2*pi/n)),w(1,0),t; for(int i=0;i<n>>1;i++,w*=wn) t=w*r[i],x[i]=l[i]+t,x[i+(n>>1)]=l[i]-t;}int w[140005];char A[60005],B[60005];double eps=0.01;int main(){ int n; scanf("%d",&n); scanf("%s%s",A,B); for(int i=0;i<n;i++) a[i]=A[n-i-1]-'0'; for(int i=0;i<n;i++) b[i]=B[n-i-1]-'0'; int m=n*2-2;for(n=1;n<=m;n<<=1); fft(a,n,1);fft(b,n,1); for(int i=0;i<n;i++) a[i]*=b[i]; fft(a,n,-1); for(int i=0;i<n;i++) w[i]=a[i].real()/n+0.5; for(int i=0;i<=m;i++) if(w[i]>=10) { w[i+1]+=w[i]/10;w[i]%=10; if(i==m) m++; } for(int i=m;i>=0;i--) printf("%d",w[i]); return 0;}
1 0
- bzoj 2179 FFT快速傅里叶
- BZOJ 2179 FFT快速傅立叶 FFT
- 【BZOJ 2179】【FFT模板】 FFT快速傅立叶
- BZOJ 2179(FFT快速傅立叶-FFT)
- 【BZOJ 2179】 FFT快速傅立叶|FFT
- BZOJ 2179 FFT快速傅立叶 FFT
- bzoj 2179: FFT快速傅立叶 (FFT)
- BZOJ 2179 FFT快速傅立叶(FFT)
- [BZOJ]2179 FFT快速傅立叶 FFT模板
- bzoj 2179: FFT快速傅立叶
- BZOJ 2179 FFT快速傅立叶
- BZOJ 2179FFT快速傅立叶
- BZOJ 2179: FFT快速傅立叶
- BZOJ 2179 FFT快速傅立叶
- bzoj 2179: FFT快速傅立叶
- 【BZOJ 2179】 FFT快速傅立叶
- BZOJ 2179: FFT快速傅立叶
- bzoj 2179 FFT快速傅立叶
- 给python安装numpy+scipy+sklearn
- CountDownLatch实现并发多线程操作
- C/C++库函数strstr和find实现子字符串查找
- tensorflow-模型保存与读取
- LeetCode (Implement strStr())
- bzoj 2179 FFT快速傅里叶
- react-native-image-picker在iOS上闪退的解决办法
- 埃及分数
- 计算机系统知识
- 数据转换的规则汇总
- C# 继承
- C# 多态性
- spark作业调度
- 在.net中使用wcf做服务时,千万不要使用127.0.0.1作为Endpoint的address