이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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;
}
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |