实现大数乘法,输入是两个字符串如
n1 = '340282366920938463463374607431768211456'
n2 = '340282366920938463463374607431768211456'
输出
'115792089237316195423570985008687907853269984665640564039457584007913129639936'
要求:不能使用对大数相乘有内建支持的语言;需要包含对输入字符串的合法性校验
昨天刚写完大数加法,今天来写大数乘法
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
string MulString(string str1,string str2)
{
vector<int> v(str1.size()+str2.size()-1,0);
for(unsigned int i=0;i<str1.size();i++)
{
for(unsigned int j=0;j<str2.size();j++)
{
v[i+j]+=(str1[i]-'0')*(str2[j]-'0');
}
}
int k=v.size()-1;
while(k)
{
v[k-1]+=v[k]/10;
v[k]%=10;
k--;
}
string res="";
for(unsigned int i=0;i<v.size();i++)
{
res+=to_string(v[i]);
}
if(res[0]=='0')
return "0";
else
return res;
}
int main()
{
string str1,str2;
while(cin>>str1>>str2)
{
cout<<MulString(str1,str2);
}
return 0;
}