Pagini recente » Cod sursa (job #2905787) | Cod sursa (job #1241459) | Cod sursa (job #1294521)
#include <cstdio>
#define NMAX 10000
int solve(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(){
freopen("cifre.in","r", stdin);
freopen("cifre.out","w", stdout);
int a, b, c, k;
scanf("%d %d %d %d", &a, &b, &c, &k);
double p = b - a + 1;
int n = 0;
if(b - a >= NMAX){
while(a % NMAX){
if(solve(a, c) >= k)
++n;
++a;
}
while(b - a >= NMAX){
int nr = solve(a / NMAX, c), i;
for(int 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;
}