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
#include <iostream>
#define ll long long
using namespace std;

ll na_ile (ll x)
{
    if (x<10)
        return x+1;
    if (x>18)
        return 0;
    return 19-x;
}

int main ()
{
    //cout << na_ile (12)<<endl;
    //cout << na_ile (11)<<endl;
    //cout << na_ile (1)<<endl;
    //cout << na_ile (2)<<endl;

    ll n;
    cin >> n;
    if (n<10)
    {
        cout << n+1;
        return 0;
    }
    ll prelast = na_ile (n%10);
    ll last = na_ile (n%100) + prelast * na_ile((n/10)%10);
    n/=10;
    while (n>9)
    {
        ll newlast = prelast*na_ile(n%100) + last*na_ile((n/10)%10);
        prelast = last;
        last = newlast;
        n/=10;
    }
    cout << last;
    return 0;
}