Cod sursa(job #1551430)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 15 decembrie 2015 21:05:25
Problema Cifre Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#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) );
    for ( i = 0; i < MAX_IT; i++ ) {
      tmp = rand() % ( B - A + 1 ) + 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;
}