思路:每次讲一个数的一位与另一个数相乘,相当于简便运算即99=90+9,每次后面补0即可,记得进位处理。
#include<bits/stdc++.h>
using namespace std;
string mul(char s1, string s2)
{
string res = "";
int len = s2.size();
int pos = 0;
for(int i = len - 1 ; i >= 0 ; i --)
{
int num = (s1 - '0') * (s2[i] - '0');
num += pos;
pos = num / 10;
res += ((num % 10) + '0');
}
while(pos > 0)
{
res += ((pos % 10) + '0');
pos /= 10;
}
reverse(res.begin(), res.end());
return res;
}
string add(string s1, string s2)
{
string res = "";
int len1 = s1.size();
int len2 = s2.size();
int pos = 0;
while(len1 > 0 && len2 > 0)
{
int num = (s1[len1 - 1] - '0') + (s2[len2 - 1] - '0');
num += pos;
pos = num / 10;
res += ((num % 10) + '0');
len1 --;
len2 --;
}
while(len1 > 0)
{
int num = (s1[len1 - 1] - '0');
num += pos;
pos = num / 10;
res += ((num % 10) + '0');
len1 --;
}
while(len2 > 0)
{
int num = (s2[len2 - 1] - '0');
num += pos;
pos = num / 10;
res += ((num % 10) + '0');
len2--;
}
while(pos > 0)
{
res += ((pos % 10) + '0');
pos /= 10;
}
reverse(res.begin(), res.end());
return res;
}
int main()
{
string s1, s2;
while(cin >> s1 >> s2)
{
int len1 = s1.size();
int len2 = s2.size();
string res = "";
for(int i = len1 - 1 ; i >= 0 ; i --)
{
string tmp = mul(s1[i], s2);
int up = len1 - i - 1;
while(up > 0)
{
tmp += ('0');
up --;
}
res = add(res ,tmp);
}
cout << res << endl;
}
return 0;
}