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

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;

#define ST first
#define ND second
#define PB push_back

int solve(string s) {
    vector<ll> dp (30);
    dp[0] = 1;
    for(int i=1; i <= s.size(); i++) {
        char c = s[s.size()-i];
        if(c == '1' && i > 1) {
            char d = s[s.size()-i+1];
            ll num = 10+(d-48);
            ll mult = min(num+1, 19-num);
            dp[i]+= mult*dp[i-2];
        }
        dp[i]+= (c-47)*dp[i-1];
    }
    return dp[s.size()];
}

int main() {
    ios_base::sync_with_stdio(0);
    string s;
    cin >> s;
    cout << solve(s) << "\n";
}