双高精度乘法
作者:
xyAC
,
2024-07-22 09:53:57
,
所有人可见
,
阅读 4
#include <bits/stdc++.h>
using namespace std;
vector<int> mul(vector<int> & a,vector<int> &b) {
vector<int> c(a.size() + b.size() + 10,0);
for(int i = 0;i < a.size();i++) {
for(int j = 0;j < b.size();j++) {
c[i+j] += a[i] * b[j];
}
}
int t = 0;
// 因为c数组是预处理过的长度,而且足够用的
for(int i = 0;i < c.size();i++) {
t += c[i];
c[i] = t % 10;
t /= 10;
}
// 去除c数组中的前导0
while(c.size() > 1 && c.back() == 0) c.pop_back();
return c;
}
int main()
{
vector<int> a,b;
string s1,s2;
cin>>s1>>s2;
for(int i = s1.size()-1;i >= 0;i--)
{
a.push_back(s1[i] - '0');
}
for(int i = s2.size()-1;i >= 0;i--){
b.push_back(s2[i] - '0');
}
cout<<endl;
auto c = mul(a,b);
for(int i = c.size()-1;i >= 0;i--) {
cout<<c[i];
}
return 0;
}