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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <bits/stdc++.h>

#define ll long long
#define pi std::pair<int, int>
#define pll std::pair<ll, ll>
#define vi std::vector<int>
#define vll std::vector<ll>
#define vpi std::vector<pi>
#define vpll std::vector<pll>
#define si std::set<int>

// jezeli przeniesienie psuje, to jest problem wszedzie wczesniej, bo jak usuniemy przeniesienie, to psuje sie wszystko co wymagalo przeniesienia
// czyli jezeli jest za duzo to skibidi nie da sie zrobic tak by ten fragment byl zawarty wraz z jakimis wczesniejszymi, mozemy sie tylko zastanawiac czy moze byc samemu albo z jakims pozniejszym
// jezeli jest za malo to tez psuje wszystko.
// jezeli jest idealnie to trzeba rozwazyc czy przez przeniesienie czy nie

void solve()
{
    std::string a, b, c;
    std::cin >> a >> b >> c;

    ll ans = 0, ostatnie = 0, fragmenty = 0, przen = 0;

    for (int i = a.size() - 1; i >= 0; i--)
    {
        int digA = a[i] - '0', digB = b[i] - '0', digC = c[i] - '0';

        if ((digA + digB + przen) % 10 != digC)
        {
            if ((digA + digB) % 10 == digC)
            {
                fragmenty = 1;
                if(digA + digB == digC) {
                    ans++;
                    przen = 0;
				}
                else
                    przen = 1;
            }
            else
            {
                fragmenty = 0;
                przen = 0;
            }
        }
        else
        {

            if (!przen)
                fragmenty++;
            if (digA + digB + przen == digC)
            {
                ans += fragmenty;
                przen = 0;
            }
            else
                przen = 1;
        }
    }

    std::cout << ans << '\n';
}

int main()
{
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);

    int t = 1;
    // std::cin >> t;
    while (t--)
    {
        solve();
    }
}