高精度乘法模板题。
给出两个非负整数,求它们的乘积。
输入共两行,每行一个非负整数。
输出一个非负整数表示乘积。
1
2
2
每个非负整数不超过 102000。
#include using namespace std; int a[2005],b[2005],c[4005]; string chen(string ad,string bd) {if(ad=="0"||bd=="0") return "0"; int lena=ad.size(); int lenb=bd.size(); for(int i=0;i<lena;i++) a[i]=ad[lena-1-i]-'0'; for(int j=0;j<lenb;j++) { b[j]=bd[lenb-1-j]-'0'; } for(int i=0;i<lena;i++) for(int j=0;j<lenb;j++) c[i+j]+=a[i]*b[j]; for(int i=0;i<lena+lenb;i++) { c[i+1]+=c[i]/10; c[i]=c[i]%10; } string cd; if(c[lena+lenb-1])//防止输出像0132这种数 cd+=std::to_string(c[lena+lenb-1]); for(int i=0;i<lena+lenb;i++) cd+=std::to_string(c[lena+lenb-1-i]); return cd; } int main() { string ad,bd; cin>>ad>>bd; cout<<chen(ad,bd); return 0; }