终于算清楚了
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int s[10] = {0,1,20,300,4000,50000,600000,7000000,80000000,900000000};
int zero[10] = {0,10,110,1110,11110,111110,1111110,11111110,111111110};
int power[10] = {1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
int count(int n,int* a)
{
for(int i=0;i<10;i++)
a[i] = 0;
int cnt=0;
int num[10];
if(!n) num[cnt++] = 0;
while(n)
{
num[cnt++] = n%10;
n/=10;
}
for(int i=0;i<cnt;i++)
{
if(!i)
{
for(int j=0;j<=num[0];j++) a[j]++;
for(int j=i+1;j<cnt;j++)
a[num[j]] += num[0]+1;
continue;
}
for(int j=0;j<10;j++)
{
a[j] += s[i]*num[i];
}
for(int j=0;j<num[i];j++)
{
a[j] += power[i];
}
for(int j=i+1;j<cnt;j++)
a[num[j]] += num[i]*power[i];
}
a[0] -= zero[cnt-1];
}
int main()
{
//freopen("input.txt","r",stdin);
int A,B;
while(scanf("%d%d",&A,&B)!=EOF && A || B)
{
int aa[10],bb[10];
count(A-1,aa);count(B,bb);
printf("%d",bb[0]-aa[0]);
for(int i=1;i<10;i++)
{
printf(" %d",bb[i]-aa[i]);
}
printf("\n");
}
return 0;
}