P1303 A*B Problem(高精度乘法)
Posted zzctommy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1303 A*B Problem(高精度乘法)相关的知识,希望对你有一定的参考价值。
模拟就好了。(c_ {i+j} +=a_i imes b_j).时间复杂度 (O(n*m)) (FFT版可以做到 (O((n+m)log (n+m)))
#include<bits/stdc++.h>
using namespace std;
string times(string a,string b)
{
int aa[15000]={0},bb[15000]={0},ans[30000]={0};
string str="";
for(int i=0;i<a.length();i++)
aa[a.length()-i-1]=a[i]-'0';
for(int i=0;i<b.length();i++)
bb[b.length()-i-1]=b[i]-'0';
for(int i=0;i<a.length();i++)
for(int j=0;j<b.length();j++)
{
ans[i+j]+=aa[i]*bb[j];
if(ans[i+j]>9)ans[i+j+1]+=ans[i+j]/10,ans[i+j]=ans[i+j]%10;
}
int len=a.length()+b.length();
while(ans[len-1]==0&&len-1>0)len--;
for(int i=0;i<len;i++)
str=char(ans[i]+'0')+str;
return str;
}
int main()
{
string x,y;
cin>>x>>y;
cout<<times(x,y)<<endl;
return 0;
}
以上是关于P1303 A*B Problem(高精度乘法)的主要内容,如果未能解决你的问题,请参考以下文章