1 #include <bits/stdc++.h> //大数相加
2 using namespace std;
3
4 int main()
5 {
6 string a, b, res;
7 cin >> a >> b;
8 int i, k, inc, lena, lenb, temp;
9 lena = a.length(); lenb = b.length();
10 for (i = lena - 1, k = lenb - 1, inc = 0; i >= 0 || k >= 0; --i, --k)
11 {
12 temp = inc;
13 if (i >= 0)
14 {
15 temp += a[i] - '0';
16 }
17 if (k >= 0)
18 {
19 temp += b[k] - '0';
20 }
21 res += temp % 10 + '0';
22 inc = temp / 10;
23 }
24 if (inc)
25 {
26 res += inc + '0';
27 }
28 reverse(begin(res), end(res));
29 cout << res << endl;
30 return 0;
31 }
#include<bits/stdc++.h> //大数相乘
using namespace std;
string strAdd(string a, string b, int shift)
{
int i, j, inc, temp;
string res;
while (shift-- > 0)
{
b = '0' + b;
}
temp = inc = 0;
int lena = a.length();
int lenb = b.length();
for (i = j = 0; i < lena || j < lenb; )
{
temp = inc;
if (i < lena)
{
temp += a[i] - '0';
++i;
}
if (j < lenb)
{
temp += b[j] - '0';
++j;
}
inc = temp / 10;
res += temp % 10 + '0';
}
if (inc)
res += inc + '0';
return res;
}
string strMulti(string a, string b)
{
string res = "0";
int i, j, lena, lenb, nTemp, inc;
lena = a.length(), lenb = b.length();
reverse(begin(a), end(a));
reverse(begin(b), end(b));
for (i = 0; i < lena; ++i)
{
nTemp = inc = 0;
string strTemp = "";
for (j = 0; j < lenb; ++j)
{
nTemp = (a[i] - '0') * (b[j] - '0') + inc;
inc = nTemp / 10;
strTemp += nTemp % 10 + '0';
}
if (inc > 0)
{
strTemp += inc + '0';
}
res = strAdd(res, strTemp, i);
}
reverse(begin(res), end(res));
bool flag = true;
string finalRes;
for (char c : res)
{
if (c == '0' && flag)
{
continue;
}
else
{
flag = false;
}
finalRes += c;
}
return finalRes;
}
int main()
{
string a, b;
cin >> a >> b;
cout << strMulti(a, b) << endl;
return 0;
}