一开始想了想,没有什么好的办法,以为要用什么科技。
然后没有什么想法,就去网上查题解,原来暴力打表就可以…
以后还得看数据范围分析时间空间复杂度啊…
想复杂了…本来就是一道水题
AC代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int dig[10001][10];
void init()
{
for (int i = 1; i <= 10000; i++)
{
for (int j = 0; j < 10; j++)
dig[i][j] = dig[i - 1][j];
for (int j = i; j > 0; j /= 10)
dig[i][j % 10]++;
}
}
int main()
{
int t;
init();
scanf("%d", &t);
while (t--)
{
int x;
scanf("%d", &x);
for (int i = 0; i < 10; i++)
{
if (i != 0)
printf(" %d", dig[x][i]);
else
printf("%d", dig[x][i]);
}
printf("\n");
}
// system("pause");
return 0;
}