题解 | 大数乘法
大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571
class Solution {
public:
string add(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int pre = 0, i = 0;
if (a.size() > b.size()) swap(a, b);
for (; i < a.size(); i ++) {
int num1 = a[i] - 48, num2 = b[i] - 48;
int sum = pre + num1 + num2;
pre = sum / 10;
b[i] = sum % 10 + 48;
}
for (; i < b.size(); i ++) {
int num = b[i] - 48;
int sum = pre + num;
pre = sum / 10;
b[i] = sum % 10 + 48;
}
if (pre) b.push_back('1');
reverse(b.begin(), b.end());
return b;
}
string solve(string s, string t) {
if (s.size() < t.size()) swap(s, t);
string ans = "";
for (int i = 0; i < t.size(); i ++) {
for (int j = 0; j < t[i] - 48; j ++) {
ans = add(ans, s);
}
if (i != t.size() - 1) ans.push_back('0');
}
return ans == "" ? "0": ans;
}
};

查看10道真题和解析