Cod sursa(job #1460140)

Utilizator retrogradLucian Bicsi retrograd Data 11 iulie 2015 17:05:36
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("cifre.in");
ofstream fout("cifre.out");

#define rnd(a, b) (a + (rand() % (b-a+1)))
int a, b, c, k;

bool check(int x) {
    int cnt = 0;
    for(;x;x/=10)
        cnt += (x % 10 == c);
    return cnt >= k;
}

double Solve1() {
    int total = 0;
    for(int i=a; i<=b; i++)
        total += check(i);
    return 1.0 * total / (b - a + 1);
}

double Solve2() {
    int it = 500000, cnt, x, total = 0;
    for(int i=1; i<=it; i++)
        total += check(rnd(a, b));
    return 1.0 * total / it;
}

int main() {
    srand(time(NULL));
    fin >> a >> b >> c >> k;

    double rez = (b - a <= 100000) ? Solve1() : Solve2();
    fout<<rez;

    return 0;
}