@[SNiFe](/user/25709)
```
#include <bits/stdc++.h>
using namespace std;
long long a[101],dp[50][50][2500],len;
long long dfs(int pos,int pront,int mos,bool limit){
long long tmp=0;
if (pos==0){
return mos==0;
}
if (mos<0){
return 0;
}
if (!limit && dp[pos][pront][mos]!=-1){
return dp[pos][pront][mos];
}
for (int i=0;i<=(limit?a[pos]:9);i++){
tmp+=dfs(pos-1,pront,mos+(i*(pos-pront)),limit && (i==(limit?a[pos]:9)));
//cout<<tmp<<endl;
}
if (!limit){
dp[pos][pront][mos]=tmp;
}
return tmp;
}
long long f(long long x){
len=0;
long long ans=0;
memset(dp,-1,sizeof dp);
memset(a,0,sizeof a);
while (x){
a[++len]=x%10;
x/=10;
}
for (int i=1;i<=len;i++){
ans+=dfs(len,i,0,1);
}
return ans-len;
}
int main(){
long long x,y;
cin>>x>>y;
long long l=f(x-1),r=f(y);
cout<<r-l<<endl;
}
```
求关注
by ikun_god @ 2023-12-03 11:28:48