71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
#include <stdio.h>
|
|
|
|
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;
|
|
} |