#include <stdio.h>
#define LEN 100
void sum(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length);
void sub(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length);
int main() {
int num1[LEN], num2[LEN];
int len1 = 0, len2 = 0;
int result_sum[LEN + 1], result_sub[LEN];
int result_length_sum, result_length_sub;
// Ввод первого числа
while (len1
< LEN
&& scanf("%d", &num1
[len1
]) == 1) { if (num1[len1] < 0 || num1[len1] > 9) {
return 0;
}
len1++;
}
// Ввод второго числа
while (len2
< LEN
&& scanf("%d", &num2
[len2
]) == 1) { if (num2[len2] < 0 || num2[len2] > 9) {
return 0;
}
len2++;
}
// Сложение
sum(num1, len1, num2, len2, result_sum, &result_length_sum);
for (int i = 0; i < result_length_sum; i++) {
}
// Вычитание
sub(num1, len1, num2, len2, result_sub, &result_length_sub);
if (result_length_sub == -1) {
} else {
for (int i = 0; i < result_length_sub; i++) {
}
}
return 0;
}
void sum(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length) {
int carry = 0, i = 0;
while (i < len1 || i < len2 || carry) {
int digit1 = (i < len1) ? buff1[len1 - 1 - i] : 0;
int digit2 = (i < len2) ? buff2[len2 - 1 - i] : 0;
int total = digit1 + digit2 + carry;
result[i] = total % 10;
carry = total / 10;
i++;
}
*result_length = i;
}
void sub(int *buff1, int len1, int *buff2, int len2, int *result, int *result_length) {
// Проверка, если buff2 больше buff1
int is_smaller = 0;
if (len1 < len2) {
is_smaller = 1;
} else if (len1 == len2) {
for (int i = 0; i < len1; i++) {
if (buff1[i] < buff2[i]) {
is_smaller = 1;
break;
} else if (buff1[i] > buff2[i]) {
break;
}
}
}
if (is_smaller) {
*result_length = -1; // Устанавливаем флаг ошибки
return;
}
int borrow = 0, i = 0;
while (i < len1) {
int digit1 = buff1[len1 - 1 - i];
int digit2 = (i < len2) ? buff2[len2 - 1 - i] : 0;
if (digit1 < digit2 + borrow) {
digit1 += 10;
result[i] = digit1 - digit2 - borrow;
borrow = 1;
} else {
result[i] = digit1 - digit2 - borrow;
borrow = 0;
}
i++;
}
// Удаление ведущих нулей
while (i > 1 && result[i - 1] == 0) {
i--;
}
*result_length = i;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIExFTiAxMDAKCnZvaWQgc3VtKGludCAqYnVmZjEsIGludCBsZW4xLCBpbnQgKmJ1ZmYyLCBpbnQgbGVuMiwgaW50ICpyZXN1bHQsIGludCAqcmVzdWx0X2xlbmd0aCk7CnZvaWQgc3ViKGludCAqYnVmZjEsIGludCBsZW4xLCBpbnQgKmJ1ZmYyLCBpbnQgbGVuMiwgaW50ICpyZXN1bHQsIGludCAqcmVzdWx0X2xlbmd0aCk7CgppbnQgbWFpbigpIHsKICAgIGludCBudW0xW0xFTl0sIG51bTJbTEVOXTsKICAgIGludCBsZW4xID0gMCwgbGVuMiA9IDA7CiAgICBpbnQgcmVzdWx0X3N1bVtMRU4gKyAxXSwgcmVzdWx0X3N1YltMRU5dOwogICAgaW50IHJlc3VsdF9sZW5ndGhfc3VtLCByZXN1bHRfbGVuZ3RoX3N1YjsKCiAgICAvLyDQktCy0L7QtCDQv9C10YDQstC+0LPQviDRh9C40YHQu9CwCiAgICB3aGlsZSAobGVuMSA8IExFTiAmJiBzY2FuZigiJWQiLCAmbnVtMVtsZW4xXSkgPT0gMSkgewogICAgICAgIGlmIChudW0xW2xlbjFdIDwgMCB8fCBudW0xW2xlbjFdID4gOSkgewogICAgICAgICAgICBwcmludGYoIm4vYVxuIik7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBsZW4xKys7CiAgICB9CgogICAgLy8g0JLQstC+0LQg0LLRgtC+0YDQvtCz0L4g0YfQuNGB0LvQsAogICAgd2hpbGUgKGxlbjIgPCBMRU4gJiYgc2NhbmYoIiVkIiwgJm51bTJbbGVuMl0pID09IDEpIHsKICAgICAgICBpZiAobnVtMltsZW4yXSA8IDAgfHwgbnVtMltsZW4yXSA+IDkpIHsKICAgICAgICAgICAgcHJpbnRmKCJuL2FcbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgbGVuMisrOwogICAgfQoKICAgIC8vINCh0LvQvtC20LXQvdC40LUKICAgIHN1bShudW0xLCBsZW4xLCBudW0yLCBsZW4yLCByZXN1bHRfc3VtLCAmcmVzdWx0X2xlbmd0aF9zdW0pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRfbGVuZ3RoX3N1bTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCByZXN1bHRfc3VtW2ldKTsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKCiAgICAvLyDQktGL0YfQuNGC0LDQvdC40LUKICAgIHN1YihudW0xLCBsZW4xLCBudW0yLCBsZW4yLCByZXN1bHRfc3ViLCAmcmVzdWx0X2xlbmd0aF9zdWIpOwogICAgaWYgKHJlc3VsdF9sZW5ndGhfc3ViID09IC0xKSB7CiAgICAgICAgcHJpbnRmKCJuL2FcbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdF9sZW5ndGhfc3ViOyBpKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCByZXN1bHRfc3ViW2ldKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cgp2b2lkIHN1bShpbnQgKmJ1ZmYxLCBpbnQgbGVuMSwgaW50ICpidWZmMiwgaW50IGxlbjIsIGludCAqcmVzdWx0LCBpbnQgKnJlc3VsdF9sZW5ndGgpIHsKICAgIGludCBjYXJyeSA9IDAsIGkgPSAwOwogICAgd2hpbGUgKGkgPCBsZW4xIHx8IGkgPCBsZW4yIHx8IGNhcnJ5KSB7CiAgICAgICAgaW50IGRpZ2l0MSA9IChpIDwgbGVuMSkgPyBidWZmMVtsZW4xIC0gMSAtIGldIDogMDsKICAgICAgICBpbnQgZGlnaXQyID0gKGkgPCBsZW4yKSA/IGJ1ZmYyW2xlbjIgLSAxIC0gaV0gOiAwOwogICAgICAgIGludCB0b3RhbCA9IGRpZ2l0MSArIGRpZ2l0MiArIGNhcnJ5OwogICAgICAgIHJlc3VsdFtpXSA9IHRvdGFsICUgMTA7CiAgICAgICAgY2FycnkgPSB0b3RhbCAvIDEwOwogICAgICAgIGkrKzsKICAgIH0KICAgICpyZXN1bHRfbGVuZ3RoID0gaTsKfQoKdm9pZCBzdWIoaW50ICpidWZmMSwgaW50IGxlbjEsIGludCAqYnVmZjIsIGludCBsZW4yLCBpbnQgKnJlc3VsdCwgaW50ICpyZXN1bHRfbGVuZ3RoKSB7CiAgICAvLyDQn9GA0L7QstC10YDQutCwLCDQtdGB0LvQuCBidWZmMiDQsdC+0LvRjNGI0LUgYnVmZjEKICAgIGludCBpc19zbWFsbGVyID0gMDsKICAgIGlmIChsZW4xIDwgbGVuMikgewogICAgICAgIGlzX3NtYWxsZXIgPSAxOwogICAgfSBlbHNlIGlmIChsZW4xID09IGxlbjIpIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjE7IGkrKykgewogICAgICAgICAgICBpZiAoYnVmZjFbaV0gPCBidWZmMltpXSkgewogICAgICAgICAgICAgICAgaXNfc21hbGxlciA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSBlbHNlIGlmIChidWZmMVtpXSA+IGJ1ZmYyW2ldKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoaXNfc21hbGxlcikgewogICAgICAgICpyZXN1bHRfbGVuZ3RoID0gLTE7IC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INGE0LvQsNCzINC+0YjQuNCx0LrQuAogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgYm9ycm93ID0gMCwgaSA9IDA7CiAgICB3aGlsZSAoaSA8IGxlbjEpIHsKICAgICAgICBpbnQgZGlnaXQxID0gYnVmZjFbbGVuMSAtIDEgLSBpXTsKICAgICAgICBpbnQgZGlnaXQyID0gKGkgPCBsZW4yKSA/IGJ1ZmYyW2xlbjIgLSAxIC0gaV0gOiAwOwoKICAgICAgICBpZiAoZGlnaXQxIDwgZGlnaXQyICsgYm9ycm93KSB7CiAgICAgICAgICAgIGRpZ2l0MSArPSAxMDsKICAgICAgICAgICAgcmVzdWx0W2ldID0gZGlnaXQxIC0gZGlnaXQyIC0gYm9ycm93OwogICAgICAgICAgICBib3Jyb3cgPSAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdFtpXSA9IGRpZ2l0MSAtIGRpZ2l0MiAtIGJvcnJvdzsKICAgICAgICAgICAgYm9ycm93ID0gMDsKICAgICAgICB9CiAgICAgICAgaSsrOwogICAgfQoKICAgIC8vINCj0LTQsNC70LXQvdC40LUg0LLQtdC00YPRidC40YUg0L3Rg9C70LXQuQogICAgd2hpbGUgKGkgPiAxICYmIHJlc3VsdFtpIC0gMV0gPT0gMCkgewogICAgICAgIGktLTsKICAgIH0KICAgICpyZXN1bHRfbGVuZ3RoID0gaTsKfQo=