Submission #132845

#TimeUsernameProblemLanguageResultExecution timeMemory
132845muradeynPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
3 ms504 KiB
/* Murad Eynizade */ #include <bits/stdc++.h> #define intt long long #define fyck ios_base::sync_with_stdio(0);cin.tie(0); #define F first #define S second //#define endl '\n' using namespace std; int len; intt a , b; intt dp[20][11][11][2]; string s; intt solve(int i,int d1,int d2,int f) { //cout<<i<<" "<<d1<<" "<<d2<<" "<<f<<endl; if (dp[i][d1][d2][f] != -1)return dp[i][d1][d2][f]; if (i == len) return dp[i][d1][d2][f] = f; intt ret = 0; int til; if (f) til = 9; else til = s[i] - '0'; for (int in = 0;in<=til;in++) { if ((d1 != 10 && in == d1) || (d2 != 10 && in == d2) )continue; if (in == 0 && d2 == 10 && i != len - 1)continue; int nf = f; nf |= (in < s[i] - '0'); nf |= (in == 10); ret += solve(i + 1 , d2 , in , nf); } if (d2 == 10 && i != len - 1) ret += solve(i + 1 , d2 , d2 , 1); return dp[i][d1][d2][f] = ret; } intt get(intt x) { memset(dp , -1 , sizeof(dp)); s = ""; len = 0; while (x) { s += x % 10 + '0'; x /= 10; len++; } reverse(s.begin(),s.end()); return solve(0 , 10 , 10 , 0); } int main() { fyck cin>>a>>b; cout<<get(b + 1) - get(a)<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...