Pagini recente » Cod sursa (job #59971) | Cod sursa (job #193534) | Cod sursa (job #3181025) | Cod sursa (job #1563287) | Cod sursa (job #1573601)
#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!