H

来源:互联网 发布:星际皆知你爱我微盘 编辑:程序博客网 时间:2024/06/11 21:12

https://vjudge.net/contest/155220#problem/H

大体意思为输入一个数n,从1数到n,计算0到9各出现了几次

思路:运用啊哈算法桶排序思想,数组名和数组的关系

注意:当n>=10时,有一个巧妙地方法,a[i%10]++;把个位数存起来,然后i=i/10;

代码:

#include <stdio.h>
#include <string.h>
int main()
{
    int T,N,i,j;
    int a[10];
    scanf("%d",&T);
    while (T--)
    {
        memset(a,0,sizeof(a));
        scanf("%d",&N);
        for (i=1;i<=N;i++)
        {
            j = i;
            while (j>0)
            {
                a[j%10]++;
                j /= 10;
            }
        }
        for (i = 0;i < 9;i++)
            printf("%d ",a[i]);
        printf("%d\n",a[9]);
    }
    return 0;
}

0 0
原创粉丝点击