#include using namespace std; /** * 功能:高精度减法模板 * @param A * @param B * @return */ vector sub(vector &A, vector &B) { int t = 0; vector C; for (int i = 0; i < A.size(); i++) { t = A[i] - t; if (i < B.size()) t -= B[i]; C.push_back((t + 10) % 10); if (t < 0)t = 1; else t = 0; } while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; } //对比函数 bool cmp(vector &A, vector &B) { if (A.size() != B.size()) return A.size() > B.size(); for (int i = A.size() - 1; i >= 0; i--) //这里的判断要注意顺序,因为高位在后 if (A[i] != B[i]) return A[i] > B[i]; return true; } int main() { //以字符串形式读入 string a, b; cin >> a >> b; vector A, B, C; //1、准备动作,将字符串的每一位,反序放入到整数运算数组中 for (int i = a.size() - 1; i >= 0; i--)A.push_back(a[i] - '0'); for (int i = b.size() - 1; i >= 0; i--)B.push_back(b[i] - '0'); //2、调用模板进行计算 if (cmp(A, B)) C = sub(A, B); else { printf("-"); C = sub(B, A); } //3、输出结果,需要倒序噢 for (int i = C.size() - 1; i >= 0; i--)printf("%d", C[i]); return 0; }