大整数减法
题目描述
求两个不超过200位的非负整数的差
输入
两个整数a,b(第二个可能比第一个大)
输出
结果(是负数要输出负号)
输入输出样例
输入
2
1
输出
1
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main() {
string a, b;
bool flag = true;
cin >> a >> b;
stack<int>s;
int len_a = a.length(), len_b = b.length();
if (len_a < len_b || (len_a == len_b && a < b)) swap(a, b), flag = false;
int sum, k = 0;
len_a = a.length(), len_b = b.length();
len_a--;
len_b--;
while (len_a >= 0 || len_b >= 0) {
if (len_a >= 0 && len_b >= 0)
sum = a[len_a] - b[len_b] - k;
else if (len_a >= 0)
sum = a[len_a] - '0' - k;
else sum = b[len_b] - '0' - k;
if (sum < 0)
sum += 10, k = 1;
else k = 0;
s.push(sum);
len_a--;
len_b--;
}
while (s.top() == 0 && s.size() > 1)
s.pop();
if (!flag)
cout << "-";
while (!s.empty()) {
cout << s.top();
s.pop();
}
cout << endl;
return 0;
}