题目描述
思路分析
高精度乘法
具体做法是拆数,倒序,压位。
代码实现
class Solution {
public:
string multiply(string num1, string num2) {
vector<int> A,B;
int n=num1.size(),m=num2.size();
for(int i=num1.size()-1;i>=0;i--) A.push_back(num1[i]-'0');
for(int i=num2.size()-1;i>=0;i--) B.push_back(num2[i]-'0');
vector<int> c(n+m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
c[i+j]+=A[i]*B[j];
}
for(int i=0,t=0;i<c.size();i++){
t+=c[i];
c[i]=t%10;
t/=10;
}
int k = c.size() - 1;
while (k > 0 && !c[k]) k -- ;
string res;
while (k >= 0) res += c[k -- ] + '0';
return res;
}
};