AcWing 793. 高精度乘法—111ms
原题链接
简单
作者:
Belous
,
2019-05-19 21:39:55
,
所有人可见
,
阅读 1144
C++11 代码
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string BigIntergerMul(const string &a, const string &b)
{
if (a == "0" || b == "0")
return "0";
string ans(a.size() + b.size(), '0');
int sp = 0;
for (auto i = a.rbegin(); i != a.rend(); ++i)
{
if (*i == '0')
continue;
auto aimi = (*i - '0');
auto spindex = (i - a.rbegin());
for (auto j = b.rbegin(); j != b.rend(); ++j)
{
auto temp = ans[spindex] - '0' + aimi * (*j - '0') + sp;
sp = 0;
if (temp >= 10)
{
sp = temp / 10;
temp -= sp * 10;
}
ans[spindex++] = temp + '0';
}
while (sp)
{
ans[spindex++] += sp % 10;
sp /= 10;
}
}
reverse(ans.begin(), ans.end());
return ans.substr(ans.find_first_not_of('0'));
}
int main(int argc, char **argv)
{
string a, b;
cin >> a >> b;
cout << BigIntergerMul(a, b) << endl;
return EXIT_SUCCESS;
}