Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
168651 | 赖子洋 | 高精度乘法 | C++ | 解答错误 | 13 | 0 MS | 248 KB | 1090 | 2024-08-20 12:48:41 |
#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; }