Cod sursa(job #2337636)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 6 februarie 2019 16:26:27
Problema Factorial Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>

using namespace std;

ifstream fin( "fact.in" );
ofstream fout( "fact.out" );

const int INF = 2000000000;

int K;

long long NrZerouri( int val )
{
  long long ans = val / 5;

  int aux = 25;
  while( aux <= val )
  {
    ans += 1LL * val / aux;
    aux *= 5;
  }

  return ans;
}

int BinSearch( int lf, int rg )
{
  if( lf > rg ) return INF;

  int mid = ( lf + rg ) / 2;
  long long rez;

  rez = NrZerouri( mid );

  if( rez > K ) return BinSearch( lf, mid - 1 );
  if( rez < K ) return BinSearch( mid + 1, rg );

  return min( mid, BinSearch( lf, mid - 1 ) );
}

int main()
{
  fin >> K;

  int res = BinSearch( 1, 10000000 );

  ( res < INF ) ? fout << res << '\n' : fout << "-1\n";

  return 0;
}