原题地址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3666
刚见到的时候感觉没有好的方法处理,然后突然发现,可以打表啊......
然后想到二维数组打表,但是数组来回赋值比较麻烦........就采用结构体打表了...........
采用的统计方法也很好......数组下标...
#include<stdio.h>
#include<string.h>
struct digit
{
int num[10];
}x[10005];
void db()
{
int cnt=0;
for(int i=1;i<10005;++i)
{
int tp=i;
x[i]=x[i-1];//这样赋值方便
while(tp)//统计
{
++x[i].num[tp%10];
tp/=10;
}
}
}
int main()
{
int t;db();
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<9;++i)
{
printf("%d ",x[n].num[i]);
}
printf("%d\n",x[n].num[9]);
}
return 0;
}