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
   | const int N = 100005; int A[N],B[N],C[N]; int la,lb,lc;
  bool cmp(int A[], int B[]){     if(la != lb) return la>lb;     for(int i=la-1; i>=0; i--){         if(A[i] != B[i]) return A[i]>B[i];     }     return true; }
  void sub(int A[], int B[], int C[]){     for(int i = 0; i<lc; i++){         if(A[i] < B[i]){             A[i+1]--;             A[i] += 10;         }         C[i] = A[i] - B[i];     }     while(lc && C[lc] == 0) lc--; }
  int main(){     string a,b;     cin >> a >> b;     la = a.size();     lb = b.size();     lc = max(la, lb);     for(int i = la-1; i >= 0; i--){         A[la-1-i] = a[i]-'0';     }     for(int i = lb-1; i >= 0; i--){         B[lb-1-i] = b[i]-'0';     }     if(!cmp(A,B)){         swap(A,B);     }     sub(A,B,C);     for(inr i = lc; i>=0; i--){         cout<< C[i];     }     return 0; }
   |