taffy • 6个月前
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll l,r,dp[12][12],a[12];
void init(){
for(int i=0;i<=9;i++) dp[1][i]=1;
for(int i=2;i<=10;i++){
for(int j=0;j<=9;j++){
for(int k=0;k<=9;k++){
if(abs(j-k)>=2) dp[i][j]+=dp[i-1][k];
}
}
}
}
ll work(int x){
ll len=0,ans=0;
while(x) a[++len]=x%10,x/=10;
for(int i=1;i<=len-1;i++){
for(int j=1;j<=9;j++){
ans+=dp[j][i];
}
}
for(int i=1;i<len;i++){
ans+=dp[len][i];
}
for(int i=len-1;i>=1;i--){
for(int j=0;j<=a[i]-1;j++){
if(abs(j-a[i+1])>=2) ans+=dp[j][i];
}
if(abs(a[i]-a[i+1])<2) break;
}
return ans;
}
int main(){
cin>>l>>r;
init();
cout<<work(r+1)-work(l);
}
评论: