#include <bits/stdc++.h> #define ll long long ll n; ll pre[1000]; ll res = 0; void prepare(){ for (int i = 0; i <= 19; i++){ for (int k = 0; k <= 9; k++){ int l = i-k; if (l >= 0 && l <= 9) pre[i]++; } } } ll go(ll N){ if (N == 0) return 1; ll tmp = 0; // odklejam jedna int x = (N%10); tmp = go(N/10) * pre[x]; // odklejam dwie if (N >= 10){ x = (N%100); tmp += go(N/100) * pre[x]; } return tmp; } int main(){ std::ios_base::sync_with_stdio(0); std::cin.tie(NULL); std::cin >> n; prepare(); res = go(n); std::cout << res << "\n"; }
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 | #include <bits/stdc++.h> #define ll long long ll n; ll pre[1000]; ll res = 0; void prepare(){ for (int i = 0; i <= 19; i++){ for (int k = 0; k <= 9; k++){ int l = i-k; if (l >= 0 && l <= 9) pre[i]++; } } } ll go(ll N){ if (N == 0) return 1; ll tmp = 0; // odklejam jedna int x = (N%10); tmp = go(N/10) * pre[x]; // odklejam dwie if (N >= 10){ x = (N%100); tmp += go(N/100) * pre[x]; } return tmp; } int main(){ std::ios_base::sync_with_stdio(0); std::cin.tie(NULL); std::cin >> n; prepare(); res = go(n); std::cout << res << "\n"; } |