题目:

题解:
分情况统计
例如要统计的个数,可以统计在每一位上的个数,然后相加
此时要注意一种特殊情况,即要统计的个数
例如要统计在第位的个数的时候,应该注意,前三位不能都为
所以此时的时候取值范围变成了,所以此时
#include <bits/stdc++.h>
using namespace std;
int dig(long long n)
{
int res=0;
while(n)
{
res++;
n/=10;
}
return res;
}
long long con(long long x,int i)
{
int d=dig(x);
long long ans=0;
for(int j=1;j<=d;j++)//从右向左的第j位
{
int p=1;
for(int k=1;k<=j-1;k++) p*=10;
int l=x/p/10,r=x%p,dj=x/p%10;//dj为从右到左的第j位,l是dj左边的整数,r是dj右边的整数
//0<=xxx<abc
if(i) ans+=l*p;
if(!i&&l) ans+=(l-1)*p;
//xxx=abc
if(dj>i&&(i||l)) ans+=p;
if(dj==i&&(i||l)) ans+=r+1;
}
return ans;
}
int main()
{
long long a,b;
while(cin>>a>>b)
{
if(a==0&&b==0) break;
if(a>b) swap(a,b);
for(int i=0;i<=9;i++)
{
cout<<con(b,i)-con(a-1,i)<<" ";
}
cout<<endl;
}
return 0;
}