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
#include <bits/stdc++.h>
char s[4][1000009];
int N,mb[1000009],m2[1000009];
signed main(void) {
    scanf("%s",s[1]+1);
    scanf("%s",s[2]+1);
    scanf("%s",s[3]+1);
    N=strlen(s[1]+1);
    for(int i=1;i<=N;i++) {
        int a=s[1][i]-'0';
        int b=s[2][i]-'0';
        int c=s[3][i]-'0';
        if(c==(a+b)%10) {
            mb[i]=0;
            if(a+b>=10) m2[i]=1;
        } else if(c==(a+b+1)%10) {
            mb[i]=1;            
            if(a+b>=9) m2[i]=1;
        } else {
            mb[i]=m2[i]=-1;
        }
    }
    int l=1,ct=0;
    long long as=0;
    for(int i=1;i<=N;i++) {
        if(mb[i]==-1) {
            l=i+1;
            ct=0;
            continue;
        }
        if(m2[i]!=mb[i-1]) {
            l=std::max(l,i);
            ct=0;
        }
        if(m2[i]==0) ct++;
        if(mb[i]==0) {
            as+=ct;
        }
    }
    printf("%lld",as);
}