Submission #1295638

#TimeUsernameProblemLanguageResultExecution timeMemory
1295638bakhtiyarnPalindrome-Free Numbers (BOI13_numbers)C++20
31.67 / 100
1 ms584 KiB
#include <bits/stdc++.h> using namespace std; #define int long long void TLE() { TLE(); } string a, b; int fir = 0; int dfs(int i, bool big, bool lit, char last_1, char last_2){ if(i == b.size()) return 1; if(big and lit){ int rest = b.size()-i-1, eight = 1; while(rest--) eight *= 8; int res = 0; for(char j='0'; j<='9'; j++){ if(j == last_1 or j == last_2) continue; res += eight; } return res; } if(lit){ int res = 0; for(char j=a[i]+1; j<='9'; j++){ if(j == last_1 or j == last_2) continue; res += dfs(i+1, true, true, last_2, j); } if(a[i] != last_2 and a[i] != last_1) res += dfs(i+1, false, true, last_2, a[i]); return res; } if(big){ int res = 0; for(char j='0'; j<b[i]; j++){ if(j == last_1 or j == last_2) continue; res += dfs(i+1, true, true, last_2, j); } if(b[i] != last_2 and b[i] != last_1) res += dfs(i+1, true, false, last_2, b[i]); return res; } if(a[i] == b[i]) { if(last_1 == a[i] or last_2 == a[i]) { cout << 0; exit(0); } return dfs(i+1, false, false, last_2, a[i]); } int res = 0; for(char j=a[i]+1; j<b[i]; j++){ if(j == last_1 or j == last_2) continue; res += dfs(i+1, true, true, last_2, j); } if(last_2 != a[i] and last_1 != a[i]) { if(i <= fir) res += dfs(i+1, false, true, last_2, '%'); else res += dfs(i+1, false, true, last_2, a[i]); } if(last_2 != b[i] and last_1 != b[i]) res += dfs(i+1, true, false, last_2, b[i]); return res; } void solve(){ cin >> a >> b; while(a.size() < b.size()) a = '0' + a; fir = a.size(); for(int i=0; i<a.size(); i++){ if(a[i] != '0') break; fir = i; } cout << dfs(0, false, false, '%', '&'); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...