Cod sursa(job #1796162)

Utilizator mdiannnaMarusic Diana mdiannna Data 3 noiembrie 2016 10:19:07
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <cmath>
#include <stdio.h>


#define ll long long
using namespace std;


ll A[16];


ll zero(ll x){
    ll i = 1;
    ll rez = 0;
    while(x >= A[i]){
        rez += x / A[i];
        i++;
    }
    return rez;
}


void generarePuteri5(){
  for(int i=1; i<16; i++)
    {
        A[i] = pow(5, i);
    }
}


ll cautareBinara(ll x, ll st, ll dr){
    ll m = (st+dr)/2;

    if(st==dr){
        return st;
    }

    if( x<= zero(m))
        return cautareBinara(x, st, m);
     else
        return cautareBinara(x, m+1, dr);
}


ll finalRez(ll N, ll a, ll b){
    for(ll i =a; i<b; i++){
        if(zero(i) == N)
            return i;
    }
    return b;
}

int main(){

    ll N;
   freopen("fact.in", "r", stdin);
   freopen("fact.out", "w", stdout);


    cin >> N;

  generarePuteri5();


   // ll a = cautareBinara(N-1, 1, 100000);
    ll b = cautareBinara(N, 1, 1<<18);

    if(zero(b)!=N+1)
        cout << b;
    else
        cout << "-1";
    return 0;
}