题目大意: 把前n(n<=10000) 个整数按顺序写在一起,123456789101112···· 数一数0~9个出现多少次(输出10个数,分别是按0,1,2,3····9出现的次数)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int arr[11][10005];
memset(arr,0,sizeof(arr));
for(int i=1;i<=10005;i++)
{ int e=i;
while (e)
{
arr[e%10][i]++;
e=e/10;
}
for(int j=0;j<10;j++)
arr[j][i]+=arr[j][i-1]; //打表 适合问题:所求的结果在过程中需要重复并且打表数据量不大
}
int T;
cin >>T;
while (T--)
{ int n;
cin >>n;
for(int i=0;i<9;i++)
cout <<arr[i][n]<<" ";
cout <<arr[9][n]<<endl;
}
return 0;
}