#include #include using namespace std; bool is_A_smaller_than_B(string A, string B) { if(A.size() < B.size()) { return true; } if(A.size() > B.size()) { return false; } for(int i = 0; i < (int) A.size(); i++) { if(A[i] < B[i]) { return true; } if(A[i] > B[i]) { return false; } } return false; } string subtract_big_integer(string A, string B) { if(is_A_smaller_than_B(A, B)) { swap(A, B); } int sz_a = (int)A.size() - 1; int sz_b = (int)B.size() - 1; int carry = 0; string diff = ""; while(sz_a >= 0 and sz_b >= 0) { int digit_a = (A[sz_a] - '0'); int digit_b = (B[sz_b] - '0'); int razlika = digit_a - digit_b - carry; if(razlika < 0) { razlika += 10; carry = 1; } else { carry = 0; } diff += (razlika + '0'); sz_a--; sz_b--; } while(sz_a >= 0) { int digit_a = (A[sz_a] - '0'); int razlika = digit_a - carry; if(razlika < 0) { carry = 1; razlika += 10; } else { carry = 0; } diff += (razlika + '0'); } reverse(diff.begin(), diff.end()); return diff; } int main() { cout << subtract_big_integer("98421", "19999") << endl; return 0; }