#include <stdio.h>
#include <math.h>
#define ll long long

ll res[10]={};
ll cnt[10][2] = {}; //10^len ~ 10^(len+1)-1 까지의 숫자에서 0~9 사용 개수

void f() {
    int len=0;
    double POW=pow(10, len-1);
    while(len<10) {
        ll val = 9*len*POW, val2 = val+POW*10;
        cnt[len][0] += val;
        cnt[len][1] = val2;
        len++; POW*=10;

        //printf("%d, %lf : %lld %lld\n", len, POW, cnt[len][0], cnt[len][1]);
    }
}

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

    f();

    int len=0; //10^len
    while(n>pow(10, len)) {
        if(pow(10, len)< n && n<pow(10, len+1)) break; //이러면 애먼 9999 도 걸리는데..
        res[0] += cnt[len][0];
        for(int i=1; i<10; i++) res[i] += cnt[len][2];
        len++;
    }
    //나의 의도는 100부터는 100-999에 걸리도록 하는 것이었는데 101부터 파훼..

    while(n>=pow(10, len)) {
        int k=n;
        while(k) {
            res[k%10]++;
            k/=10;
        }
        n--;
    }

    for(int i=0; i<10; i++) printf("%lld ", res[i]);
}

Intégrer sur un site web

Pour intégrer ce projet à votre site web, copiez le code suivant et collez-le dans le HTML de votre site web :