Loading... ``` #include <iostream> #include <vector> #include <algorithm> std::string operator*(std::string& A, std::string& B) { if (A == "0" || B == "0") return "0"; std::string ans; std::vector <int> a, b, c; c.resize((int)A.length() + (int)B.length() + 2); for (auto i = A.rbegin(); i != A.rend(); ++i) a.push_back((int)(*i - '0')); for (auto i = B.rbegin(); i != B.rend(); ++i) b.push_back((int)(*i - '0')); for (int i = 0; i < (int)a.size(); ++i) { for (int j = 0; j < (int)b.size(); ++j) { c[i + j] += a[i] * b[j]; c[i + j + 1] += c[i + j] / 10; c[i + j] %= 10; } } for (auto i = c.rbegin(); i != c.rend(); ++i) ans += (char)(*i + '0'); while (!(int)(*ans.begin() - '0')) ans.erase(ans.begin()); return ans; } std::string a, b; int main () { std::cin >> a >> b; std::cout << a * b; } ``` 最后修改:2024 年 08 月 08 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏