| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 214532 | | 高精度乘法 | C++ | 通过 | 100 | 0 MS | 244 KB | 875 | 2026-07-20 21:26:04 |
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { string a, b; cin >> a >> b; int la = a.size(), lb = b.size(); vector<int> res(la + lb, 0); // 从低位到高位逐位相乘 for (int i = la - 1; i >= 0; i--) { for (int j = lb - 1; j >= 0; j--) { int mul = (a[i] - '0') * (b[j] - '0'); int p1 = i + j, p2 = i + j + 1; // p1为高位,p2为低位 int sum = mul + res[p2]; res[p2] = sum % 10; res[p1] += sum / 10; } } // 转为字符串,跳过前导零 string ans = ""; int i = 0; while (i < res.size() && res[i] == 0) i++; while (i < res.size()) ans += to_string(res[i++]); if (ans.empty()) ans = "0"; cout << ans << endl; return 0; }