Cod sursa(job #717000)

Utilizator GrimpowRadu Andrei Grimpow Data 19 martie 2012 15:12:16
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
# include <cstdio>

const char *FIN = "cifre.in", *FOU = "cifre.out" ;
const int MAX = 10000 ;

int A, B, C, K, F, P ;

inline int cf ( int X ) {
    int sol = 0 ;
    for ( ; X ; X /= 10 ) {
        if ( X % 10 == C ) ++sol ;
    }
    return sol ;
}

int main ( void ) {
    fscanf ( fopen ( FIN, "r" ) , "%d %d %d %d", &A, &B, &C, &K ) ;
    if ( B - A >= MAX ) {
        for ( ; A % MAX ; ++A, ++P ) {
            if ( cf ( A ) >= K ) {
                ++F ;
            }
        }
        for ( int x = 0; B - A >= MAX ; A += MAX, P += MAX ) {
            x = cf ( A / MAX ) ;
            if ( x >= K ) F += 6561 ;
            if ( x >= K - 1 ) F += 2916 ;
            if ( x >= K - 2 ) F += 487 ;
            if ( x >= K - 3 ) F += 35 ;
            if ( x >= K - 4 ) ++F ;
        }
    }
    for ( ; A <= B ; ++A, ++P ) {
            if ( cf ( A ) >= K ) {
                ++F ;
            }
        }
    fprintf ( fopen ( FOU, "w" ), "%.4lf", 1.0 * F / P ) ;
}