1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| #include <bits/stdc++.h> using namespace std; vector<int> A, B, C; bool fuhshu = false;
bool cmp(vector<int> &A, vector<int> &B) { if (B.size() > A.size()) return true;
if (B.size() == A.size()) { for (int i = A.size() - 1; i >= 0; --i) { if(A[i] != B[i]) return B[i] > A[i]; } } return false; }
void getArr(vector<int> &a, vector<int> &b) { for(int i = 0,t = 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 and C.back() == 0 ) { C.pop_back(); } } int main() { string s1, s2; cin >> s1 >> s2; for (int i = s1.length() - 1; i >= 0; --i) { A.push_back(s1[i] - '0'); } for (int i = s2.length() - 1; i >= 0; --i) { B.push_back(s2[i] - '0'); }
if (cmp(A, B)) { getArr(B, A); fuhshu = true; } else { getArr(A, B); }
if(fuhshu) cout << '-'; for(int i = C.size() - 1;i >= 0;--i) {
cout << C[i] <<""; } cout << endl; return 0; }
|