Cod sursa(job #1730524)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 17 iulie 2016 00:32:28
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>

const int EPS = 1e6;

int CntDigits( int X, int Y ) {
    int Z = 0;

    while( X != 0 ) {
        Z += ( (X % 10 == Y) ? 1 : 0 );
        X /= 10;
    }

    return Z;
}

void SolveTestCase( void ) {
    int A, B, C, K, Ans = 0;
    scanf( "%d %d %d %d", &A, &B, &C, &K );

    if( B - A + 1 <= EPS ) {
        for( int i = A; i <= B; i ++ ) {
            if( CntDigits( i, C ) >= K )
                Ans ++;
        }

        printf( "%.4lf\n", 1.0 * Ans / (B - A + 1) );
    } else {
        for( int i = 1; i <= EPS; i ++ ) {
            int X = A + rand() % ( B - A + 1 );

            if( CntDigits( X, C ) >= K )
                Ans ++;
        }

        printf( "%.4lf\n", 1.0 * Ans / EPS );
    }
    return;
}

int main( int argc, const char *argv[] ) {
    int T = 1; srand( time(0) );

    freopen( "cifre.in" , "r", stdin  );
    freopen( "cifre.out", "w", stdout );

    for( int i = 1; i <= T; i ++ )
        SolveTestCase();

    return 0;
}