Cod sursa(job #1573601)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 19 ianuarie 2016 20:12:46
Problema Cifre Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <ctime>
#include <iomanip>
#include <cstdlib>

using namespace std;

ifstream fin("cifre.in");
ofstream fout("cifre.out");

int a, b, c, k;

bool check(int x) {
	
	int cnt = 0;
	for (; x; x /= 10)
		cnt += (x % 10 == c);
	
	return cnt >= k;
}

double solve1() {

	int ret = 0;
	for (int i = a; i <= b; ++i)
		ret += check(i);

	return 1.0 * ret / (b - a + 1);

}

double solve2() {

	int ret = 0;
	for (int i = 1; i <= 1000000; ++i)
		ret += check(a + rand() % (b - a + 1));

	return 1.0*ret / 1000000;

}

int main() {

	fin >> a >> b >> c >> k;

	srand(time(NULL));

	fout << setprecision(4) << fixed << (b - a <= 100000 ? solve1() : solve2()) << '\n';

	return 0;

}

//Trust me, I'm the Doctor!