Cod sursa(job #2004249)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 25 iulie 2017 13:09:05
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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;
}

long long sol = -1;

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 if(var > p){
      dr = mij - 1;
    }
    else{
      sol = mij;
      dr = mij - 1;
    }
    cautareBinara(st, dr);
  }
}

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

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