#include <bits/stdc++.h>
using namespace std;
void sum(string a, string b) {
vector<int> ans = { 0 };
int dsz = a.size() - b.size();
for (int i = 0; i < dsz; ++i) //先将a不和b进行运算的部分添加
ans.push_back(a[i] - 48);
for (int i = 0; i < b.size(); ++i) //加法运算
ans.push_back((a[i + dsz] + b[i] - 48) - 48);
for (auto i = ans.end() - 1; i != ans.begin(); --i) {
if (*i >= 10) { //进位
*(i - 1) += 1;
*i %= 10;
}
}
auto it = ans.begin();
while (!(*it))
it++;
for (auto i = ans.cbegin(); i != ans.cend(); ++i)
cout << *i;
cout << endl;
}
void _minus(string a, string b) {
vector<int> ans = { 0 };
int dsz = a.size() - b.size();
for (int i = 0; i < dsz; ++i)
ans.push_back(a[i] - 48);
for (int i = 0; i < b.size(); ++i)
ans.push_back((int)(a[i + dsz] - 48) - (int)(b[i] - 48));
for (auto i = ans.end() - 1; i != ans.begin(); --i) {
if (*i < 0) { //进位
*(i - 1) -= 1;
*i += 10;
}
}
int i;
for (i = 0; i < ans.size();) {
if (!ans[i])
++i;
else
break;
}
if (i == ans.size()) {
cout << "0";
return;
}
else {
for (; i < ans.size(); ++i)
cout << ans[i];
return;
}
}
int main()
{
string a, b;
cin >> a >> b;
if (a.size() >= b.size()) { //a longer or same length
sum(a, b);
_minus(a, b);
}
else {
sum(b, a);
cout << "-";
_minus(b, a);
}
return 0;
}
2021/2/12: 瞅了瞅以前写的代码,我愿称之为 狗不理代码。。。