我又回来啦
这道题会用到大数加法与大数减法,但是要考虑负数的情况
情况 | 处理方法 |
---|---|
两个数都是正数 | 正常相加 |
两个数都是负数 | 在两个数绝对值相加的结果前加上一个‘-’ |
第一个是负数,另一个是正数 | 比较其绝对值,如果第一个的绝对值大于第二个的,那么就输出第一个数的绝对值减去第二个数的绝对值再在前面加一个‘-’,否则输出第二个数的绝对值减第一个数的绝对值 |
第一个是正数,另一个是负数 | 比较其绝对值,如果第一个的绝对值大于第二个的,那么就输出第一个数的绝对值减去第二个数的绝对值,否则输出第二个数的绝对值减第一个数的绝对值再在前面加一个‘-’ |
具体代码:
#include <bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> A, vector<int> B) {
int t = 0;
vector<int> C;
for (int i = 0; i < max(A.size(), B.size()); i++) {
if (i < A.size()) t += A[i];
if (i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if (t) C.push_back(1);
return C;
}
bool cmp(vector<int> A, vector<int> B) {
if (A.size() != B.size())
return A.size() > B.size();
for (int i = A.