Pagini recente » Cod sursa (job #3257586) | Cod sursa (job #1597539) | Cod sursa (job #1655634) | Cod sursa (job #3140841) | Cod sursa (job #2344328)
#include <bits/stdc++.h>
#define RAND_CONSTANT 100005
int A, B, C, K;
int Match[10][10];
std::ifstream In ("cifre.in");
std::ofstream Out("cifre.out");
void Citire() {
In >> A >> B >> C >> K;
}
void Rezolvare() {
srand(time(NULL));
int found = 0;
for (int i=0; i<10; ++i)
Match[i][i] = 1;
if (B-A <= 1000000) {
for (int i=A, cnt, V; i<=B; ++i) {
V = i;
cnt = 0;
if (V == 0)
cnt = Match[C][0];
while (V) {
cnt += Match[C][V%10];
V /= 10;
}
if (cnt >= K)
++found;
} Out << std::fixed << std::setprecision(4) << double(found) / (B-A+1);
return;
}
for (int i=0, cnt, V; i<RAND_CONSTANT; ++i) {
V = rand()%(B-A+1) + A;
cnt = 0;
if (V == 0)
cnt = Match[C][0];
while (V) {
cnt += Match[C][V%10];
V /= 10;
}
if (cnt >= K)
++found;
} Out << std::fixed << std::setprecision(4) << double(found) / RAND_CONSTANT;
}
int main()
{
Citire();
Rezolvare();
return 0;
}