Cod sursa(job #658832)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 9 ianuarie 2012 17:53:31
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

int c;

int cf(int x)
{
    int sol=0 ;
    for (;x;x/=10)
        if (x%10==c )
            ++sol;
    return sol ;
}

int main ()
{
    int a,b,k,f=0,p=0,x;

    freopen("cifre.in","r",stdin);
    freopen("cifre.out","w",stdout);

    scanf("%d%d%d%d",&a,&b,&c,&k);

    if (b-a>=10000)
    {
        for (;a%10000;++a,++p)
            if (cf(a)>=k)
                ++f;

        for (x=0;b-a>=10000;a+=10000,p+=10000)
        {
            x=cf(a/10000) ;
            if (x>=k)
                f+=6561;
            if (x>=k-1)
                f+=2916;
            if (x>=k-2)
                f+=487;
            if (x>=k-3)
                f+=35;
            if (x>=k-4)
                ++f;
        }
    }

    for (;a<=b;++a,++p)
        if (cf(a)>=k)
            ++f;

    printf("%.4lf",(double)f/p) ;

    return 0;
}