Cod sursa(job #667241)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 22 ianuarie 2012 19:22:03
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>
#include <time.h>
#include <algorithm>

using namespace std;

int fav;
int a,b,c,k;

void citire()
{
    freopen("cifre.in", "r", stdin);
    scanf("%d %d %d %d", &a, &b, &c, &k);
    fclose(stdin);
}

bool verif(int number)
{
    int contor = 0;
    while(number)
    {
        if(number % 10 == c)
        {
            contor++;
        }
        number /= 10;
    }
    return contor >= k;
}

double solve()
{
    srand(time(NULL));
    int tries = 1200000;
    int number;
    if(b - a <= 1200000)
    {
        for(int i = a; i <= b; i++)
        {
            if(verif(i))
            {
                fav++;
            }
        }
        return (double)((double)fav/(double)(b - a + 1));
    }
    else
    {
        while(tries)
        {
            number = a + rand() % (b - a + 1);
            if(verif(number))
            {
                fav++;
            }
            tries--;
        }
        return (double)((double)fav/(double)(1200000));
    }
}

void afisare()
{
    freopen("cifre.out", "w", stdout);
    printf("%.4lf", solve());
    fclose(stdout);
}

int main()
{
    citire();
    afisare();
    return 0;
}