Pagini recente » Cod sursa (job #52476) | Cod sursa (job #1732590) | Cod sursa (job #3247564) | Cod sursa (job #1078419) | Cod sursa (job #1551431)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_IT 1000000
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 {
srand( time(NULL) );
B = B - A + 1;
for ( i = 0; i < MAX_IT; i++ ) {
tmp = rand() % 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;
}