Digit Counting UVA - 1225
题目传送:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3666
题目大意:求一串连续整数中的0-9出现的次数,比如:13,即12345678910111213,那么这个时候输出十个整数,分别是0-9出现的次数
Output:1,6,2,2,1,1,1,1,1,1,1;
分析:打表查表;
AC Code:
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
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;
}