Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
168492 | 李熙宸 | 高精度乘法 | C++ | 解答错误 | 13 | 1 MS | 260 KB | 981 | 2024-08-20 11:11:57 |
#include <iostream> #include <string> #include <algorithm> using namespace std; string highPrecisionMultiply(const string& num1, const string& num2) { if (num1 == "0" || num2 == "0") return "0"; string result(num1.size() + num2.size(), '0'); int i_n1 = num1.size() - 1; int i_n2 = num2.size() - 1; for (int i = 0; i <= i_n1; ++i) { for (int j = 0; j <= i_n2; ++j) { int mul = (num1[i_n1 - i] - '0') * (num2[i_n2 - j] - '0'); int sum = mul + (result[i + j + 1] - '0'); result[i + j + 1] = sum % 10 + '0'; result[i + j] = (sum / 10) + (result[i + j] - '0'); } } int k = result.size() - 1; while (k >= 0 && result[k] == '0') k--; if (k == -1) return "0"; return result.substr(0, k + 1); } int main() { string A, B; cin >> A >> B; cout << highPrecisionMultiply(A, B) << endl; return 0; }