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
#include <iostream>
#include <string>

using namespace std;

string add(string a, string b)
{
    // Jeśli jedna z liczb jest pusta, zwróć drugą
    if (a.empty()) return b;
    if (b.empty()) return a;

    // Zmienne pomocnicze
    string result;
    int carry = 0;

    // Przeprowadź dodawanie cyfra po cyfrze, od końca liczb
    for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0 || carry; i--, j--)
    {
        int sum = carry;

        // Jeśli obie liczby są dłuższe niż aktualna pozycja, dodaj cyfrę z a i b
        if (i >= 0) sum += a[i] - '0';
        if (j >= 0) sum += b[j] - '0';

        // Oblicz cyfrę wyniku i ewentualny przeniesienie
        result = (char)(sum % 10 + '0') + result;
        carry = sum / 10;
    }

    return result;
}

int main()
{
    // Pobierz a i b
    string a, b;
    cin >> a >> b;

    // Wypisz sumę a i b
    cout << add(a, b) << endl;

    return 0;
}