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
// Template generated by Clank
#include<bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define all(x) x.begin(), x.end()
#define BOOST cin.tie(NULL); ios_base::sync_with_stdio(false);
// #define int ll
typedef long long ll;
 
int32_t main(){
    BOOST;
    string a, b, c; cin >> a >> b >> c;
    int n = (int)a.size();
    int good = 0, carry = 0;
    ll ans = 0;
    for(int i = 0; i < n; i++){
        a[i] -= '0';
        b[i] -= '0';
        c[i] -= '0';
    }
    for(int i = n - 1; i >= 0; i--){
        // cout << "\n" << i << " ";
        if((a[i] + b[i] + carry) % 10 == c[i]){
            // cout << " ok1 ";
            if((a[i] + b[i]) % 10 == (int)c[i]){
                good++;
                // cout << " ok2 ";
            }
            if(a[i] + b[i] + carry <= 9){
                // cout << " ok3.1 ";
                ans += good;
                carry = 0;
            } else {
                // cout << " ok3.2 ";
                carry = 1;
            }
        } else {
            // cout << " ok5 ";
            good = 0;
            carry = 0;
            if((a[i] + b[i]) % 10 == c[i]){
                // cout << " ok6 ";
                i++;
                continue;
            }
        }
    }
    // cout << "\n";
    // cout << ans << "\n";
    cout << ans;
    return 0;
}