Cod sursa(job #228543)

Utilizator ProtomanAndrei Purice Protoman Data 7 decembrie 2008 14:32:20
Problema Cifre Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#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;
}