Cod sursa(job #1703299)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 16 mai 2016 18:39:55
Problema Cifre Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>

using namespace std;

const int N = 1001000;

int i,x, K,A,B,C, ans=0;

inline int cifre(int x)
{
    int cnt=0;
    if(!C && !x) return 1;
    while(x)
    {
         if(x%10==C) ++cnt;
         x/=10;
    }
    return cnt;
}
int main()
{
    freopen("cifre.in", "r", stdin);
    freopen("cifre.out", "w", stdout);

    srand(time(NULL));

    scanf("%d%d%d%d", &A, &B, &C, &K);
    ans=0;

    if(B-A<N)
    {
        for(i=A; i<=B; ++i)
            ans += (cifre(i)>=K);
        long double z=(double)ans/(B-A+1);
        printf("%.10Lf\n", z);
        return 0;
    }

    for(i=1; i<=N; ++i)
    {
        x = A+1LL*rand()*rand()%(B-A+1);
        if(cifre(x)>=K) ++ans;
    }

    long double z=(double)ans/N;
    printf("%.10Lf\n", z);

    return 0;
}