Cod sursa(job #199575)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 19 iulie 2008 15:55:20
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
long a,b,c,k,fav,pos,n;
double posib,favor,prob;
long cif(long aa);
int main()
{
	freopen("cifre.in","rt",stdin);
	freopen("cifre.out","wt",stdout);
	scanf("%ld%ld%ld%ld",&a,&b,&c,&k);
	if(a+9999<b)
	{ while(a%10000)
	  { n=cif(a);
	    if(n>=k)fav++;
	    a++;
	    pos++;
	  }
	  while(a+9999<b)
	  { n=cif(a/10000);
	    if(n+4>=k)fav++;
	    if(n+3>=k)fav+=36;
	    if(n+2>=k)fav+=486;
	    if(n+1>=k)fav+=2916;
	    if(n>=k)fav+=6561;
	    a+=10000;
	    pos+=10000;
	  }
	}
	while(a<=b)
	{ n=cif(a);
	  if(n>=k)fav++;
	  a++;
	  pos++;
	}
	posib=(double)pos;
	favor=(double)fav;
	prob=favor/posib;
	printf("%.4lf\n",prob);
	return 0;
}
long cif(long aa)
{
	long bb=aa,ret=0;
	while(bb)
	{ if(bb%10==c)ret++;
	  bb/=10;
	}
	return ret;
}