Cod sursa(job #2714261)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 1 martie 2021 16:35:33
Problema Cifre Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;
string a, nr, b;
int stanga, dreapta;
int cate, k, c;

void bkt( int s ){
    if( nr.size() > b.size() )
        return;
    if( nr.size() >= a.size() )
        if( nr.size() == b.size() ){
            if( nr <= b )
                if( s >= k )
                    ++cate;
        } else if( s >= k )
            ++cate;
    for( int i = '0'; i <= '9'; i++ ){
        string cop = nr;
        nr += i;
        bkt( s + ( i - 48 == c ) );
        nr = cop;
    }
}

int main()
{
    ifstream fin( "cifre.in" );
    fin >> a >> b >> c >> k;
    for( int i = 0; i < a.size(); i++ )
        stanga = stanga * 10 + a[ i ] - 48;
    for( int i = 0; i < b.size(); i++ )
        dreapta = dreapta * 10 + b[ i ] - 48;
    for( int i = '1'; i <= '9'; i++ ){
        nr = i;
        bkt( ( i - 48 == c ) );
    }
    FILE *fout = fopen( "cifre.out", "w" );
    fprintf( fout, "%.4f\n", ( double )cate / ( dreapta - stanga + 1 ) );
    fclose( fout );
    return 0;
}