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

#define ll long long
#define s second
#define f first

const int N=1e6+4;
vector <int> lacz;
int T[N][2];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    string pie, dru, kon;
    int sum=0, last=0;
    bool otw=0;
    cin >> pie >> dru >> kon;
    // cerr << pie.size() << '\n';
    for( int i=pie.size()-1; i >= 0; --i ){
        T[i][0] = (kon[i]-pie[i]-dru[i]+48+100)%10;
        if( T[i][0] > 1 ){
            T[i][0]=2;
            T[i][1]=4;
        }
        else
            T[i][1] = (pie[i]+dru[i]+T[i][0]-48-48)/10;
        // cerr << i << ' ' << T[i][0] << ' ' << T[i][1] << '\n';
    }
    for( int i=pie.size()-1; i>=0; --i ){
        if( T[i][0] != T[i+1][1] && otw ){
            lacz.push_back( sum );
            // cerr << "INNE " << i << '\n';
            sum=0;
            otw=0;
        }
        if( T[i][0] == 0 && !otw ){
            sum=0;
            otw=1;
        }
        if( T[i][1] == 0 ){
            sum++;
        }
        // cerr << i << ' ' << sum << ' ' << otw << '\n';
    }
    if( otw )
        lacz.push_back(sum);
    ll odp=0;
    for( int i:lacz ){
        ll dod = i;
        odp += (dod*(dod+1))/2;
        // cerr << "JEST " << i << '\n';
    }
    cout << odp ;

    return 0;
}