Cod sursa(job #2004236)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 25 iulie 2017 12:52:58
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

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

long long p;//date de intrare

void citire(){
  in >> p;
}

long long nrZerouri(long long nr){
  long long nrZ = 0;
  while(nr != 0){
    nrZ += nr / 5;
    nr /= 5;
  }
  return nrZ;
}

int sol = 0;

void cautareBinara(long long & st, long long dr){
  if(st <= dr){
    long long mij = st + (dr - st) / 2;
    long long var = nrZerouri(mij);
    //out << mij << ' '<<var << '\n';
    if(var < p)
      st = mij + 1;
    else
      dr = mij - 1;
    if(var == p)
      sol = mij;
    cautareBinara(st, dr);
  }
}

void rezolvare(){
  if(p < 0){
    out << "-1";
  }
  else{
    long long st = 1, dr = LLONG_MAX;
    cautareBinara(st , dr);
    out << st;
  }
}

int main(){
  citire();
  rezolvare();
  return 0;
}