Cod sursa(job #1974916)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 29 aprilie 2017 12:50:34
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <limits.h>

using namespace std;

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

unsigned long p;
unsigned long sum;

unsigned long zeros(unsigned long k){
    unsigned long sum = 0;
    while(k){
        sum += k / 5;
        k /= 5;
    }
    return sum;
}

unsigned long binarySearch(){
    unsigned long lo = 0;
    unsigned long hi = LLONG_MAX;
    unsigned long mid;
    while(lo <= hi){
        mid = lo + (hi - lo) / 2;
        unsigned long zero = zeros(mid);
        if(zero == p){
            return mid;
        }
        else if (zero < p) lo = mid + 1;
        else hi = mid - 1;
        if(lo > hi) return -1;
    }
}

int main(){
    f >> p;
    if(!p) g << 1 << '\n';
    else{
        if(binarySearch() == -1) g << -1 << '\n';
        else g << binarySearch() / 5 * 5 << '\n';
    }
}