Submission #240587

#TimeUsernameProblemLanguageResultExecution timeMemory
240587nafis_shifatPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
6 ms384 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; ll dp[19][11][11][2]={}; int len; int ar[19]; ll DP(int pos,int m1,int m2,int sm) { ll &ret=dp[pos][m1+1][m2+1][sm]; if(len==pos) { ret=1; return 1; } if(ret!=-1)return ret; ret=0; int mx=sm?9:ar[pos]; for(int i=0;i<mx;i++) { if(i!=m1&&i!=m2) ret+=DP(pos+1,m2,i,1); } if(mx!=m2 && mx!=m1) ret+=DP(pos+1,m2,mx,sm); return ret; } ll calc(ll a) { if(a<=9)return a+1; memset(dp,-1,sizeof dp); len=0; while(a) { ar[len++]=a%10; a/=10; } reverse(ar,ar+len); ll res=DP(0,0,-1,0); for(int i=1;i<=len;i++)res+=DP(i,0,-1,1); return res; } int main() { ll a,b; cin>>a>>b; if(a<b) swap(a,b); ll pd=calc(a)-calc(b-1); cout<<pd<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...