习题3-3 UVA1225 Digit Counting(20行AC代码)

紫书刷题进行中,题解系列点这里

习题3-3 UVA1225 Digit Counting(20行AC代码)

思路分析

给定正整数N,将[1,N]的数字顺序拼接为新字符串s,统计s中0-9出现的次数。

哈希表计数即可

  • 注意每行最后不允许有多余空格

AC代码(C++11,打表)

#include
using namespace std;
int num[10] = {0};
int main() {
    int T, n;
    string s;
    scanf("%d", &T);
    while(T --) {
        scanf("%d", &n);
        fill(num, num + 10, 0);
        for (int i = 1; i <= n; i ++) {
            s = to_string(i);
            for (auto ch : s) num[ch - '0'] ++;
        }
        for (int i = 0; i < 10; i ++) {
            printf("%d%s", num[i], (i == 9) ? "\n" : " ");
        }
    }
    return 0;
}

你可能感兴趣的:(算法竞赛入门经典第二版)