Pagini recente » Cod sursa (job #52039) | Cod sursa (job #3225425) | Cod sursa (job #533826) | Cod sursa (job #3178512) | Cod sursa (job #1551434)
#include <bits/stdc++.h>
#define MAX_IT 1000000
using namespace std;
inline int getRandom() {
static mt19937 gen(time(0));
int x = gen();
return x > 0 ? x : -x;
}
int main( void ) {
FILE *fin, *fout;
int A, B, dig, freq;
int tmp, i, currFreq, x, ans;
fin = fopen( "cifre.in", "r" );
fscanf( fin, "%d%d%d%d", &A, &B, &dig, &freq );
fclose( fin );
fout = fopen( "cifre.out", "w" );
ans = 0;
if ( B - A + 1 <= MAX_IT ) {
for ( i = A; i <= B; i++ ) {
tmp = i;
currFreq = 0;
while ( tmp ) {
x = tmp / 10;
currFreq += ( tmp == dig + (x<<1) + (x<<3) );
tmp = x;
}
ans += (freq <= currFreq);
}
fprintf( fout, "%.4lf\n", 1.00 * ans / ( B - A + 1 ) );
} else {
B = B - A + 1;
for ( i = 0; i < MAX_IT; i++ ) {
tmp = getRandom() % B + A;
currFreq = 0;
while ( tmp ) {
x = tmp / 10;
currFreq += ( tmp == dig + (x<<1) + (x<<3) );
tmp = x;
}
ans += (freq <= currFreq);
}
fprintf( fout, "%.4lf\n", 1.00 * ans / MAX_IT );
}
fclose( fout );
return 0;
}