题目大意:记录从 1~n 的整数中 0~9 各出现多少次。
解题思路:用二维数组制表,后一个数中各数出现的次数加上前一个数的,输出时直接读取。
#include <iostream>
#include <string.h>
using namespace std;
int a[10005][15];
int main() {
memset (a, 0, sizeof(a));
for (int i = 1; i < 10000; i++) {
int m = i;
while (m) {
a[i][m%10]++;
m /= 10;
}
for (int j = 0; j < 10; j++)
a[i][j] += a[i-1][j];
}
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
for (int i = 0; i < 9; i++)
cout << a[n][i] << " ";
cout << a[n][9] << endl;
}
return 0;
}