uva1225 Digit Cunting

开始题目没看懂卡了一下 看懂题意后就差不多可以水出来 算是暴力枚举 害怕TLE 应该是数据给的很少 ac了

#include <stdio.h>

int main() {
    int T;
    scanf("%d", &T);

    while (T--) {
        int N, i, t, a[10] = {};
        scanf("%d", &N);

        for (i = 1; i <= N; i++) {
            t = i;
            while (t) a[t%10]++, t/=10;
        }
        for (i = 0; i < 9; i++) printf("%d ", a[i]);
        printf("%d\n", a[9]);
    }
    return 0;
}

如果很多数据的话 ,就是用二维数组打表!

#include<iostream>
#include<cstring>
using namespace std;
int a[10001][10];
int main()
{
    for(int i=1;i<=10000;i++)
    {
       for(int k=i;k;k/=10)
       {
           ++a[i][k%10];
       }
       for(int k=0;k<=9;k++)
       {
           a[i][k]+=a[i-1][k];
       }
    }
    int T;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        for(int i=0;i<=8;i++)
            cout<<a[n][i]<<" ";//看清题意数据间有空格
        cout<<a[n][9]<<endl;/为了满足题意的换行,用的小技巧

    }
}

你可能感兴趣的:(枚举,main,scanf,int,for)