Cod sursa(job #517309)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 28 decembrie 2010 12:53:14
Problema Cifre Scor 50
Compilator cpp Status done
Runda prob_mate Marime 0.85 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>

#define file_in "cifre.in"
#define file_out "cifre.out"

int A,B,C,K,Q,X,ans,nr;

int cif(int x)
{
    int cf=0;
    while(x){ 
		if(x%10==C)
        cf++;
        x/=10;
    }
    return cf;

}   



int main(){
	
	srand(time(NULL));
	
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d %d %d", &A, &B, &C, &K);
	
	nr=0;
	if (A-B<=1000000){
		for (int i=A;i<=B;++i)
            if(cif(i)>=K)
             nr++;
		double rez=(double)nr/(B-A+1);
        printf("%.4lf\n",rez);
		return 0;
	}

	
	Q=500000;
	
	ans=0;
	while(Q--){
		
		nr=0;
		X=A+rand()%(B-A+1);
		while(X){
			if (X%10==C)
				nr++;
			X/=10;
		}
		
		if (K<=nr)
			ans++;
	}
	double rez=(double)(ans/50); 
	
	printf("%.4lf\n", (rez/10000));
	
	return 0;
	
}