Cod sursa(job #1294521)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 17 decembrie 2014 18:31:50
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

#define NMAX 10000

int solve(int nr, int c){
    int k = 0;
    while(nr){
        if(nr % 10 == c)
            ++k;
        nr /= 10;
    }
    return k;
}

int v[] = {6561, 2916, 487, 35, 1};

int main(){
    freopen("cifre.in","r", stdin);
    freopen("cifre.out","w", stdout);
    int a, b, c, k;
    scanf("%d %d %d %d", &a, &b, &c, &k);
    double p = b - a + 1;
    int n = 0;
    if(b - a >= NMAX){
        while(a % NMAX){
            if(solve(a, c) >= k)
                ++n;
            ++a;
        }
        while(b - a >= NMAX){
            int nr = solve(a / NMAX, c), i;
            for(int i = 0; i <= 4; ++i)
                if(nr >= k - i)
                    n += v[i];
            a += NMAX;
        }
    }
    while(a <= b){
        if(solve(a, c) >= k)
            ++n;
        ++a;
    }
    printf("%lf", n / p);
    return 0;
}