Cod sursa(job #1195030)

Utilizator apopeid15Apopei Daniel apopeid15 Data 5 iunie 2014 20:22:54
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#define MAX 10000
inline int ncif(int nr,int c)
{
    int cont=0;
    while(nr)
    {
        if(nr%10==c)
            cont++;
        nr/=10;
    }
    return cont;
}
int v[]={6561,2916,487,35,1};
int main()
{
    FILE *fin,*fout;
    fin=fopen("cifre.in","r");
    fout=fopen("cifre.out","w");
    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;
}