Cod sursa(job #1508951)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 23 octombrie 2015 11:30:44
Problema Cifre Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#define NMAX 10000
int n,a,b,c,k,nr,i;
int v[]={6561,2916,487,35,1};
double p;
int solve(int nr,int c)
{
    int k=0;
    while(nr>0)
    {
        if(nr%10==c)
            k++;
        nr/=10;
    }
    return k;
}
int main()
{
    freopen("cifre.in","r", stdin);
    freopen("cifre.out","w", stdout);
    scanf("%d%d%d%d",&a,&b,&c,&k);
    p=b-a+1;
    if(b-a>=NMAX)
    {
        while(a%NMAX)
        {
            if(solve(a,c)>=k)
                n++;
            a++;
        }
        while(b-a>=NMAX)
        {
            nr=solve(a/NMAX,c);
            for(i=0;i<=4;i++)
                if(nr>=k-i)
                    n+=v[i];
            a+=NMAX;
        }
    }
    while(a<=b)
    {
        if(solve(a,c)>=k)
            n++;
        a++;
    }
    printf("%lf",n/p);
    return 0;
}