UVA1225 - Digit Counting

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HackQ_sxj/article/details/88371379

两种解题方法:

1. 暴力

#include <cstdio>
#include <cstring>
using namespace std;
int ans[15];
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        memset(ans, 0, sizeof(ans));
        int n;
        scanf("%d", &n);
        for(int i = 1; i <= n; i++)
        {
            int temp = i;
            while(temp > 0)
            {
                ans[temp%10]++;
                temp /= 10;
            }
        }
        for(int i = 0; i < 9; i++)
            printf("%d ", ans[i]);
        printf("%d\n", ans[9]);
    }
    return 0;
}

2.

#include <cstdio>
using namespace std;

const int maxn = 10005;
int a[maxn][10];
int t, n;

int main()
{
    scanf("%d", &t);
    for(int i = 1; i <= 10000; i++)
    {
        int now = i;
        for(int j = 0; j < 10; j++)
            a[i][j] = a[i-1][j];
        while(now > 0)
        {
            int k = now%10;
            a[i][k]++;
            now /= 10;
        }
    }
        while(t--)
        {
            scanf("%d", &n);
            for(int i = 0; i < 9; i++)
                printf("%d ", a[n][i]);
            printf("%d\n", a[n][9]);
        }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/HackQ_sxj/article/details/88371379