大整数乘法(FFT)
来源:互联网 发布:安卓编程类游戏 编辑:程序博客网 时间:2024/06/05 03:11
题意:计算两个大整数的乘积
解法:FFT
10进制中10的幂次作为多项式的幂次,则两个数字的乘法可以转化为多项式乘法!
#include <stdio.h>#include <string.h>#include <set>#include <map>#include <algorithm>#include<complex>#include<iostream>#define pi acos(-1)using namespace std ;typedef complex<double> E;const int maxn = 100000+10;int R[maxn];char ch[maxn];E a[maxn],b[maxn];int c[maxn];int n,m,L;void fft(E *a,int f){ for(int i=0;i<n;i++) if(i<R[i]) swap(a[i],a[R[i]]); for(int i=1;i<n;i<<=1){ E wn(cos(pi/i),f*sin(pi/i)); for(int p=i<<1,j=0;j<n;j+=p){ E w(1,0); for(int k=0;k<i;k++,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(int i=0;i<n;i++) a[i]/=n;}int main(){ scanf("%s",ch); int len1=strlen(ch); for(int i=0;i<len1;i++) a[i]=ch[len1-1-i]-'0'; scanf("%s",ch); int len2=strlen(ch); for(int i=0;i<len2;i++) b[i]=ch[len2-1-i]-'0'; n=max(len1,len2); n--; L=0; m=2*n; for(n=1;n<=m;n<<=1) L++; for(int i=0;i<n;i++) R[i]=(R[i>>1]>>1)|((i&1)<<(L-1)); fft(a,1),fft(b,1); for(int i=0;i<=n;i++) a[i]=a[i]*b[i]; fft(a,-1); for(int i=0;i<=m;i++) c[i]=(int)(a[i].real()+0.1); for(int i=0;i<=m;i++){ if(c[i]>=10){ c[i+1]+=c[i]/10,c[i]%=10; if(i==m) m++; } } bool flag=false; for(int i=m;i>=0;i--){ if(flag||c[i]){ printf("%d",c[i]); flag=true; } }}
0 0
- 大整数乘法(FFT)
- 大整数FFT乘法
- 【FFT】大整数乘法
- 大整数乘法---FFT算法
- [codevs3123]大整数乘法(快速傅立叶变换FFT)
- HDU 1402 A * B Problem Plus(FFT 大整数乘法)
- hdu 1402 A * B Problem Plus(FFT-大整数乘法)
- HDU 1402 A * B Problem Plus (FFT, 大整数乘法)
- HDU 1402 POJ 2389 BZOJ 2179 大整数乘法 FFT
- HDU 1402 A * B Problem Plus (FFT, 大整数乘法)
- [c++] 大整数乘法(字符串乘法)
- 大整数乘法(C)
- 高精度(大整数乘法)
- 大整数运算(乘法)
- 大整数运算(乘法)
- 大整数乘法(高精度)
- 大整数-乘法(一)
- cv3123 高精度练习之超大整数乘法(FFT)
- Android Fragment State Saving. 以及 Can not perform this action after onSaveInstanceState 异常.
- 网络七层协议
- 基于S3C2440的SPI驱动的开发和测试
- 数据结构之 (单向)队列
- 关于来CSDN做博客的原因
- 大整数乘法(FFT)
- 下拉框spinner:获取选中值的三种方法
- HTTP协议详解
- c# 调用showDialog后需要Dispose
- 基于MVC3 Razor视图引擎的富文本运用
- fun:数字字符转换成大写人民币通用方法封装
- VMware虚拟机安装ubuntu的时候卡在vmwaretools
- github的使用步骤
- Foundation_编码相互转化,数据转化