//左填法 #include <bits/stdc++.h> using namespace std; long long x; long long f[11][15]; long long g[11][15]; char num0[15];int len=0; long long dp[15]; void getans(long long moe){ scanf("%lld",&x); if(moe==-1)x--; len=0; long long st=1; if(x==0)len=1; while(x)num0[++len]=x%10,x=x/10,st=st*10; st=st/10; for(int i=0;i<=9;i++){ long long pst=0; long long st2=st; for(int j=len;j>=1;j--){ long long num=num0[j]; if(j==len&&len!=1)num--; dp[i]+=g[1][j-1]*num*moe; dp[i]+=pst*st2*num*moe; if(i<num0[j]){ if(i!=0||num==num0[j]){ dp[i]+=st2*moe; } } st2=st2/10; if(num0[j]==i)pst++; } } for(int i=1;i<=len;i++)dp[num0[i]]+=moe; for(int i=0;i<=9;i++)dp[i]+=g[i!=0][len-1]*moe; } int main(){ f[1][1]=f[0][1]=g[1][1]=1; f[0][2]=9;//g[0][2]=10; for(int i=0;i<=1;i++){ long long tmp=1; for(int j=2;j<=12;j++,tmp=tmp*10){ if(i==0&&j==2)continue; f[i][j]=f[i][j-1]*10+9*tmp; g[i][j]=g[i][j-1]+f[i][j]; } } getans(-1); getans(1); for(int i=0;i<=9;i++)printf("%lld ",dp[i]); }
//右填法 #include <bits/stdc++.h> using namespace std; long long x; long long f[11][15]; char num0[15];int len=0; long long dp[15]; void getans(long long moe){ scanf("%lld",&x); if(moe==-1)x--; len=0; long long st=1; if(x==0)len=1; while(x)num0[++len]=x%10,x=x/10,st=st*10; st=st/10; for(int i=0;i<=9;i++){ long long pst=0; long long st2=st; for(int j=len;j>=1;j--){ if(j!=len&&num0[j+1]==i)pst++; for(int k=0;k<num0[j];k++){ if(len==j&&k==0&&len!=1&&i==0){ if(i==0)dp[i]+=moe; continue; } dp[i]+=f[i][j-1]*moe; if(i==k){ dp[i]+=st2*moe; } dp[i]+=pst*st2*moe; } st2=st2/10; } } for(int st=len;st>=3;st--){ dp[0]+=moe*(9*f[0][st-2]); } for(int i=1;i<=len;i++)dp[num0[i]]+=moe; } int main(){ for(int i=0;i<=9;i++)f[i][1]=1; for(int i=0;i<=9;i++){ long long tmp=10; for(int j=2;j<=12;j++){ f[i][j]=f[i][j-1]*10+tmp; tmp=tmp*10; } } getans(-1); getans(1); for(int i=0;i<=9;i++)printf("%lld ",dp[i]); }