#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;
}