#include <stdio.h>
#include <string.h>
int main(void)
{
int n ;
//freopen("input.txt" , "r" , stdin);
//freopen("output.txt" , "w" , stdout);
scanf("%d" , &n);
while(n--)
{
int N ;
int i ;
int count[10];
memset(count , 0 , sizeof(count));
scanf("%d" , &N);
for( i = 1; i <= N ; i++)
{
int num = i ;
while(num)
{
int a = num%10;
num /=10;
count[a]++; //类似桶排序
}
}
for( i =0 ; i< 9 ; i++)
{
printf("%d " , count[i]);
}
printf("%d\n" , count[i]);//注意输出格式
}
return 0 ;
}
#include <iostream> //二维数组打表
#include <cstring>
#include <cstdio>
using namespace std;
int f[10000][10];
int main()
{
memset(f, 0, sizeof(f));
for (int i = 1 ; i < 10000 ; ++ i) {
for (int j = 0 ; j < 10 ; ++ j)
f[i][j] = f[i-1][j];
int left = i;
while (left) {
f[i][left%10] ++;
left /= 10;
}
}
int t,n;
while (~scanf("%d",&t))
while (t --) {
scanf("%d",&n);
for (int i = 0 ; i < 9 ; ++ i)
printf("%d ",f[n][i]);
printf("%d\n",f[n][9]);
}
return 0;
}
#include<cstdio> //打表2
int c[10000][10];
int main()
{
int i, k, t, n;
for (i = 1; i < 10000; ++i)
{
for (k = i; k; k /= 10) ++c[i][k % 10];
for (; k < 10; ++k) c[i][k] += c[i - 1][k];
}
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
for (i = 0; i < 9; ++i)
printf("%d ", c[n][i]);
printf("%d\n", c[n][9]);
}
return 0;
}