#include using namespace std; int f(const int n, const int nines) { if (n == 0) return 1; int c = n % 10; if (c > 3) { return (c - 1) * f(nines / 10, nines / 10) + f(n / 10, nines / 10); } else if (c < 3) { return c * f(nines / 10, nines / 10) + f(n / 10, nines / 10); } return c * f(nines / 10, nines / 10); } int f_iter(int n) { int f_n = 1, f_nines = 1; while (n > 0) { int c = n % 10; if (c > 3) { f_n = (c - 1) * f_nines + f_n; } else if (c < 3) { f_n = c * f_nines + f_n; } else { f_n = c * f_nines; } f_nines *= 9; n /= 10; } return f_n; } int main(void) { int n, n_rev = 0, nines = 0; cin >> n; cout << f_iter(n) << endl; while (n > 0) { n_rev = n_rev * 10 + n % 10; nines = nines * 10 + 9; n /= 10; } cout << f(n_rev, nines) << endl; return 0; }