提交时间:2024-08-20 12:48:41

运行 ID: 168651

#include <iostream> #include <vector> #include <string> std::string multiply(const std::string &num1, const std::string &num2) { if (num1 == "0" || num2 == "0") return "0"; std::vector<int> result(num1.size() + num2.size(), 0); for (int i = num1.size() - 1; i >= 0; i--) { for (int j = num2.size() - 1; j >= 0; j--) { int mul = (num1[i] - '0') * (num2[j] - '0'); int p1 = i + j, p2 = i + j + 1; result[p1] += mul; if (result[p2] < result[p1]) { result[p2] += result[p1] / 10; result[p1] %= 10; } } } int start = 0; while (start < result.size() && result[start] == 0) start++; std::string ans; for (int i = result.size() - 1; i >= start; i--) { ans += std::to_string(result[i]); } return ans; } int main() { std::string num1, num2; std::cin >> num1 >> num2; std::string product = multiply(num1, num2); std::cout << product << std::endl; return 0; }