Cod sursa(job #1803681)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 11 noiembrie 2016 18:02:47
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

int n0 ( int n ) {
  int s = 0;

  while ( n > 0 ) {
    s = s + n / 5;
    n /= 5;
  }

  return s;
}

int main () {
  FILE *fin, *fout;

  fin = fopen ( "fact.in", "r" );
  fout = fopen ( "fact.out", "w" );

  int n;

  fscanf ( fin, "%d", &n );

  //printf ( "%d %d %d %d\n", n0 ( 24 ), n0 ( 25 ), n0 ( 26 ), n0 ( 9000 ) );

  int a = 0, b = 1000000000, x = ( a + b ) / 2 ;

  while ( b - a > 1 && n0 ( x ) != n ) {
    //printf ( "%d %d\n", a,b );
    x = ( a + b ) / 2;
    if ( n0 ( x ) > n ) /// prea mare
      b = x;
    else if ( n0 ( x ) < n ) /// prea mic
      a = x;
  }

  //printf ( "%d\n", x );

  if ( b - a <= 1 )
    fprintf ( fout, "-1" );
  else if ( n != 0 )
    fprintf ( fout, "%d\n", x - x % 5 );
  else
    fprintf ( fout, "1\n" );

  fclose ( fin );
  fclose ( fout );

  return 0;
}