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
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    string ciag_a, ciag_b, ciag_sum;
    cin >> ciag_a >> ciag_b >> ciag_sum;

    const int length = ciag_a.size();
    long long ans = 0;
    long long act_end[2] = {0, 0};

    for (int pos = length - 1; pos >= 0; pos--) {
        int cyfra_a   = ciag_a[pos]   - '0';
        int cyfra_b   = ciag_b[pos]   - '0';
        int cyfra_sum = ciag_sum[pos] - '0';

        long long managed[2] = {0, 0};

        for (int carry = 0; carry <= 1; carry++) {
            int col_tot = cyfra_a + cyfra_b + carry;
            if (col_tot % 10 == cyfra_sum) {
                int carry_l = col_tot / 10;
                managed[carry_l] += act_end[carry];
                if (carry == 0) managed[carry_l]++;
            }
        }

        act_end[0] = managed[0];
        act_end[1] = managed[1];
        ans += act_end[0];
    }

    cout << ans << "\n";
    return 0;
}