#include int main() { char a[1000] = {0}; char b[1000] = {0}; char result[1001] = {0}; int a_index = 0, b_index = 0; int result_index = 0; char ch = getchar(); while (ch != ' ') { a[a_index] = ch - '0'; ch = getchar(); a_index++; } a_index--; ch = getchar(); while (ch != '\n' && ch != EOF && ch != ' ') { b[b_index] = ch - '0'; ch = getchar(); b_index++; } b_index--; if (a_index >= b_index) { while (a_index >= 0) { int current_digit = a[a_index] + b[b_index] + result[result_index]; result[result_index] = current_digit % 10; result[++result_index] = current_digit / 10; a_index--; b_index--; } while (a_index >= 0) { int current_digit = a[a_index] + result[result_index]; result[result_index] = current_digit % 10; result[++result_index] = current_digit / 10; a_index--; } } else { while (a_index >= 0) { int current_digit = a[a_index] + b[b_index] + result[result_index]; result[result_index] = current_digit % 10; result[++result_index] = current_digit / 10; a_index--; b_index--; } while (b_index >= 0) { int current_digit = b[b_index] + result[result_index]; result[result_index] = current_digit % 10; result[++result_index] = current_digit / 10; b_index--; } } if (result[result_index] == 0) { // The hightest digit is carry. There is a possibility that this digit is 0. result_index--; } while (result_index >= 0) { printf("%d", result[result_index]); result_index--; } return 0; }