转自:http://blog.csdn.net/mobius_strip/article/details/44346607
orz ,蒟蒻的我。
一开始题意没看清,万脸懵逼。
题意:1~10000 中连续数字排列,统计0~9出现的次数。
方法:打表, % 。
#include<cstdio>
#include<cstring>
using namespace std;
int f[10000][10]; //枚举1~10000,得每个0~9
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;
}