听取WA声一片
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#define int long long
using namespace std;
typedef long long ll;
inline ll read(){
ll f=1,sum=0;char c=getchar();
while(!isdigit(c)) {if(c=='-') f=-1;c=getchar();}
while(isdigit(c)) {sum=sum*10+c-'0';c=getchar();}
return sum*f;
}
int a[20],dp[20][20];
int dfs(int pos,int num,int ans,bool flag1,bool flag2){
if(!flag1 && !flag2 && dp[pos][ans]!=-1) return dp[pos][ans];
if(pos==0) return ans;
int l=0,r=9;
if(flag1) r=a[pos];
int tot=0;
for(int i=l;i<=r;i++){
tot+=dfs(pos-1,num,ans+(i==num && !(i==0 && flag2)),(flag1 && i==r),(flag2 && i==l));
}
if(!flag1 && !flag2) dp[pos][ans]=tot;
return tot;
}
int sol(int r,int i){
memset(a,0,sizeof(a));
int id=0;
while(r){
a[++id]=r%10;
r/=10;
}
return dfs(id+1,i,0,1,1);
}
signed main(){
int l,r;
cin>>l>>r;
for(int i=0;i<=9;i++){
memset(dp,-1,sizeof(dp));
int ans=sol(r,i)-sol(l-1,r);
cout<<ans<<" ";
}
return 0;
}
给关注