제출 #817761

#제출 시각아이디문제언어결과실행 시간메모리
817761vjudge1Palindrome-Free Numbers (BOI13_numbers)C++17
100 / 100
1 ms392 KiB
#include <bits/stdc++.h> using namespace std; int v[20]; int64_t f[20][2][2][11][11]; int64_t DP(int i, int lo, int iz, int prv, int prv2) { if (i == 20) return 1; int64_t& res = f[i][lo][iz][prv + 1][prv2 + 1]; if (lo && res != -1) return res; int lim = lo ? 9 : v[i]; int64_t ans = 0; for (int d = 0; d <= lim; d++) { int niz = iz || (d > 0); if (d != prv2 && d != prv) ans += DP(i + 1, lo || (d < lim), niz, niz ? d : -1, prv); } if (lo) res = ans; return ans; } int64_t solve(int64_t x) { for (int i = 19; i >= 0; i--) v[i] = x % 10, x /= 10; return DP(0, 0, 0, -1, -1); } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); int64_t a, b; cin >> a >> b; a--; memset(f, -1, sizeof f); cout << solve(b) - solve(a); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...