#include <iostream> #include <string> #include <algorithm> #include <vector> using namespace std; // 去除前导零 string removeLeadingZeros(string s) { size_t firstNonZero = s.find_first_not_of('0'); if (firstNonZero == string::npos) return "0"; return s.substr(firstNonZero); } // 比较两个字符串数值大小 bool isGreaterOrEqual(string a, string b) { if (a.size() != b.size()) return a.size() > b.size(); for (int i = 0; i < a.size(); i++) { if (a[i] != b[i]) return a[i] > b[i]; } return true; } // 高精度加法 string add(string a, string b) { reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); string res; int carry = 0; for (int i = 0; i < max(a.size(), b.size()) || carry; i++) { int digitA = i < a.size() ? a[i] - '0' : 0; int digitB = i < b.size() ? b[i] - '0' : 0; int sum = digitA + digitB + carry; res.push_back(sum % 10 + '0'); carry = sum / 10; } reverse(res.begin(), res.end()); return removeLeadingZeros(res); } // 高精度减法 string subtract(string a, string b) { bool negative = !isGreaterOrEqual(a, b); if (negative) swap(a, b); reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); string res; int carry = 0; for (int i = 0; i < a.size(); i++) { int digitA = a[i] - '0' - carry; carry = 0; int digitB = i < b.size() ? b[i] - '0' : 0; if (digitA < digitB) { digitA += 10; carry = 1; } res.push_back(digitA - digitB + '0'); } reverse(res.begin(), res.end()); res = removeLeadingZeros(res); return negative ? "-" + res : res; } // 高精度乘法 string multiply(string a, string b) { if (a == "0" || b == "0") return "0"; reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); vector<int> product(a.size() + b.size(), 0); for (int i = 0; i < a.size(); i++) { for (int j = 0; j < b.size(); j++) { product[i + j] += (a[i] - '0') * (b[j] - '0'); } } // 处理进位 int carry = 0; for (int k = 0; k < product.size(); k++) { int total = product[k] + carry; product[k] = total % 10; carry = total / 10; } // 转换为字符串 string res; bool leadingZero = true; for (int k = product.size() - 1; k >= 0; k--) { if (product[k] == 0 && leadingZero) continue; leadingZero = false; res.push_back(product[k] + '0'); } return res.empty() ? "0" : res; } int main() { // 读取输入并处理空格 string num1, num2; getline(cin, num1); getline(cin, num2); num1.erase(remove(num1.begin(), num1.end(), ' '), num1.end()); num2.erase(remove(num2.begin(), num2.end(), ' '), num2.end()); // 处理前导零 num1 = removeLeadingZeros(num1); num2 = removeLeadingZeros(num2); // 计算并输出结果 cout << add(num1, num2) << endl; cout << subtract(num1, num2) << endl; cout << multiply(num1, num2) << endl; return 0; }