Pagini recente » Cod sursa (job #2671776) | Cod sursa (job #402608) | Cod sursa (job #1574983) | Cod sursa (job #666598) | Cod sursa (job #228543)
Cod sursa(job #228543)
#include <stdio.h>
#include <algorithm>
#define limit 100000
using namespace std;
int a, b, c, k;
int apar[limit + 4];
int me[16];
int calc(int x)
{
int f_rez = 0, av;
for (int i = 0; i < x / limit; f_rez += me[av], i++)
av = max(0, k - apar[i]);
av = max(0, apar[x / limit]);
for (int i = 0; i <= x % limit; i++)
if (av + apar[i] >= k)
f_rez++;
return f_rez;
}
int main()
{
freopen("cifre.in","r",stdin);
freopen("cifre.out","w",stdout);
scanf("%ld %ld %ld %ld", &a, &b, &c, &k);
for (int i = 0; i < limit; me[apar[i]]++, i++)
apar[i] = apar[i / 10] + (i % 10 == c);
for (int i = 5; i; me[i - 1] += me[i], i--);
printf("%.4lf\n", (double) (calc(b) - calc(a - 1)) / (b - a + 1));
fclose(stdin);
fclose(stdout);
return 0;
}