# include <iostream>
# include <cmath>
#include <vector>
using namespace std;
int kNumbers(int n,int k)
{
if(!n) return 0;
int res = 0;
vector<int >ans;
while(n){ans.push_back(n%10),n/=10;}
for(int i=ans.size()-1;i>=0;i--)
{
int left=0,right=0,t=1;
for(int j=ans.size()-1;j>i;j--) left=left*10+ans[j];
for(int j=i-1;j>=0;j--) right=right*10+ans[j],t*=10;
res+=left*t;
if(k==0) res-=t;
if(ans[i]==k) res+=right+1;
if(ans[i]>k) res+=t;
}
return res;
}
int main() {
int a, b;
int A[10], B[10]; // A[i] means the number of i from 1 to a
while(cin >> a >> b && a != 0 && b != 0) {
if (a > b) swap(a, b);
for (int i = 0; i < 10; i ++) {
A[i] = kNumbers(a - 1, i);
B[i] = kNumbers(b, i);
cout << B[i] - A[i] << " ";
}
cout << endl;
}
return 0;
}
其中,left表示当前这位前面所有位数是多少,right表示当前这位后面所有位数是多少,t用于计算从第i-1位到第0位有几位10.