Submission #77197

#TimeUsernameProblemLanguageResultExecution timeMemory
77197DrumpfTheGodEmperorPalindrome-Free Numbers (BOI13_numbers)C++14
71.25 / 100
9 ms720 KiB
#include <bits/stdc++.h> #define MOD 1000000007 #define INF 1061109567 #define int long long #define __builtin_popcount __builtin_popcountll #define pb push_back #define in(s) freopen(s,"r",stdin); #define out(s) freopen(s,"w",stdout); #define fi first #define se second #define bw(i,r,l) for (int i=r-1;i>=l;i--) #define fw(i,l,r) for (int i=l;i<r;i++) #define fa(i,x) for (auto i:x) using namespace std; int a, b, dig[19], dp[19][11][11]; int solve(int i, int j, int k, bool flag) { if (!i) return 1; if (dp[i][j][k] != -1 && !flag) return dp[i][j][k]; int n = (flag ? dig[i] : 9), ans = 0; fw (nxt, 0, n + 1) if (nxt != j && nxt != k) { ans += solve(i - 1, nxt, j, flag && nxt == n ? 1 : 0); } if (!flag) dp[i][j][k] = ans; return ans; } int calc(int r) { if (r == -1) return -1; int cnt = 0; while (r) { dig[++cnt] = r % 10; r /= 10; } return solve(cnt, 10, 10, 1); } signed main() { #ifdef aome in("aome.inp"); #endif ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> a >> b; memset(dp, -1, sizeof dp); cout << calc(b) - calc(a - 1) << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...