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; }
|