1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;

int main(){
    string s1, s2, w;
    cin >> s1 >> s2 >> w;
    long long wynik = 0, dp[s1.size()][2];

    for(int i = s1.size()-1; i >= 0; i--){
        int a = s1[i]-'0', b = s2[i]-'0', c = w[i]-'0';
        dp[i][0] = 0; dp[i][1] = 0;
        if(a+b == c) dp[i][0] = 1;
        if(a+b == c && i < s1.size()-1) dp[i][0] += dp[i+1][0];

        if(a+b-10 == c) dp[i][1] += 1;
        if(a+b-10 == c && i < s1.size()-1) dp[i][1] += dp[i+1][0];

        if(a+b == c-1 && i < s1.size()-1) dp[i][0] += dp[i+1][1];
        if(a+b-10 == c-1 && i < s1.size()-1) dp[i][1] += dp[i+1][1];

        wynik += dp[i][0];
    }
    cout << wynik;
}