A*B Problem
题目背景
高精度乘法模板题。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
样例 #1
样例输入 #1
1
2
样例输出 #1
2
提示
每个非负整数不超过 1 0 2000 10^{2000} 102000。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
cin>>s1>>s2;
int a[20005]={0},b[20005]={0},c[20005]={0};
for(int i=0;i<s1.size();i++)
{
a[i]=s1[s1.size()-i-1]-'0';
}
for(int i=0;i<s2.size();i++)
{
b[i]=s2[s2.size()-i-1]-'0';
}
for(int i=0;i<s1.size();i++)
{
for(int j=0;j<s2.size();j++)
{
c[i+j]=c[i+j]+a[i]*b[j];
}
}
int cr=0;
for(int i=0;i<s1.size()+s2.size();i++)
{
c[i]=c[i]+cr;
cr=0;
if(c[i]>9)
{
cr=c[i]/10;
c[i]=c[i]%10;
}
}
int k;
for(k=s1.size()+s2.size();c[k]==0&&k>0;k--);
for(;k>=0;k--)
{
cout<<c[k];
}
return 0;
}