Pagini recente » Cod sursa (job #2840694) | Cod sursa (job #16566) | Clasament leulloe3 | Cod sursa (job #2743984) | Cod sursa (job #1213546)
#include <cstdio>
#define MAX 10000
FILE *fin=fopen("cifre.in","r");
FILE *fout=fopen("cifre.out","w");
int ncif(int nr,int c)
{
int k=0;
while(nr)
{
if(nr%10==c) k++;
nr/=10;
}
return k;
}
int v[]={6561,2916,487,35,1};
int main()
{
int a,b,c,k;
fscanf(fin,"%d%d%d%d",&a,&b,&c,&k);
double p=b-a+1;
int n=0;
if(b-a>=MAX)
{
while(a%MAX)
{
if(ncif(a,c)>=k)
n++;
a++;
}
while(b-a>=MAX)
{
int nr=ncif(a/MAX,c),i;
for(i=0;i<=4;i++)
if(nr>=k-i)
n+=v[i];
a+=MAX;
}
}
while(a<=b)
{
if(ncif(a,c)>=k)
n++;
a++;
}
fprintf(fout,"%f",n/p);
return 0;
}