Cod sursa(job #1821667)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 3 decembrie 2016 14:14:17
Problema Cifre Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>

#define Q 1000111

int c, k;

inline int nr(int x){
    short int ans=0;
    do{
        ans+=(x%10==c);
        x/=10;
    }while(x);
    return ans>=k;
}

int main(){
    srand(time(0));

    FILE *fin, *fout;
    fin=fopen("cifre.in", "r");
    fout=fopen("cifre.out", "w");

    int a, b;
    fscanf(fin, "%d%d%d%d", &a, &b, &c, &k);

    double ans;
    if(b-a+1<=Q){
        int s=0;
        for(int i=a; i<=b; i++)
            s+=nr(i);
        ans=s/(double)(b-a+1);
    }else{
        int s=0;
        for(int i=0; i<Q; i++)
            s+=nr(a+rand()%(b-a+1));
        ans=s/(double)Q;
    }

    fprintf(fout, "%.4f\n", ans);

    fclose(fin);
    fclose(fout);
    return 0;
}