UVa 1225 Digit Counting --- 水题

Posted tan90丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 1225 Digit Counting --- 水题相关的知识,希望对你有一定的参考价值。

 

  UVa 1225

  题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字

  解题思路:用一个cnt数组记录0-9这10个数字出现的次数,先将cnt初始化为0,接着让i从1枚举到n,

       对每个i,处理以活的i的每一个位置上的数,并在相应的cnt下标上+1

       最后输出cnt数组即可

技术分享
/* UVa 1225 Digit Counting --- 水题 */
#include <cstdio>
#include <cstring>

int cnt[15];    //cnt[i]记录数字i出现的次数

//取得n的各个位上的数,并在相应的cnt+1
void fun(int n){
    if (n == 0){
        return;
    }
    ++cnt[n % 10];
    fun(n / 10);
}

int main()
{
    int t, n;
    scanf("%d", &t);
    while (t--){
        scanf("%d", &n);
        memset(cnt, 0, sizeof cnt);
        for (int i = 1; i <= n; ++i){
            fun(i);
        }
        for (int i = 0; i <= 9; ++i){
            printf(i == 9 ? "%d\n" : "%d ", cnt[i]);
        }
    }//while(t)

    return 0;
}
View Code

 

以上是关于UVa 1225 Digit Counting --- 水题的主要内容,如果未能解决你的问题,请参考以下文章

UVA 1225 Digit Counting(统计数位出现的次数)

(UVA)1225 --Digit Counting(数数字)

UVA-1225 Digit Counting

UVA 1225 Digit Counting

UVa-1225 Digit Counting(数数字)

紫书第三章练习题:UVA 1225 Digit Counting by 15邱盼威