#include <bits/stdc++.h> using namespace std; using ll = long long; using Vi = vector<int>; using Pii = pair<int, int>; using Pli = pair<ll, int>; #define pb push_back #define rep(i,b,e) for(int i=(b); i<(e); i++) #define each(a,x) for(auto& a : (x)) #define all(x) (x).begin(),(x).end() #define sz(x) int((x).size()) #define endl "\n" #define x first #define y second const int inf = 1e9 + 10; const ll mod = 1e9 + 7; int I(char i) { return i - '0'; } void solve() { vector<int> cnt(20); for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 9; j++) { cnt[i+j]++; } } string s; cin >> s; reverse(s.begin(), s.end()); int n = sz(s); s = "#" + s; vector<ll> dp(n+1); dp[0] = 1; for (int i = 1; i <= n; i++) { dp[i] = dp[i-1] * cnt[I(s[i])]; if (i > 1 && s[i] == '1') { dp[i] += dp[i-2] * cnt[10 + I(s[i-1])]; } } cout << dp[n] << endl; } int main() { cin.sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(18); solve(); return 0; }
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 41 42 43 44 45 46 47 48 49 50 | #include <bits/stdc++.h> using namespace std; using ll = long long; using Vi = vector<int>; using Pii = pair<int, int>; using Pli = pair<ll, int>; #define pb push_back #define rep(i,b,e) for(int i=(b); i<(e); i++) #define each(a,x) for(auto& a : (x)) #define all(x) (x).begin(),(x).end() #define sz(x) int((x).size()) #define endl "\n" #define x first #define y second const int inf = 1e9 + 10; const ll mod = 1e9 + 7; int I(char i) { return i - '0'; } void solve() { vector<int> cnt(20); for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 9; j++) { cnt[i+j]++; } } string s; cin >> s; reverse(s.begin(), s.end()); int n = sz(s); s = "#" + s; vector<ll> dp(n+1); dp[0] = 1; for (int i = 1; i <= n; i++) { dp[i] = dp[i-1] * cnt[I(s[i])]; if (i > 1 && s[i] == '1') { dp[i] += dp[i-2] * cnt[10 + I(s[i-1])]; } } cout << dp[n] << endl; } int main() { cin.sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(18); solve(); return 0; } |