Cod sursa(job #1888945)

Utilizator mesbotMeszaros Botond mesbot Data 22 februarie 2017 13:56:00
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

long p, n, nup = -1, ndown;

long fact(long num)
{
    n = 0;
    while(num != 0)
        num /= 5, n += num;

    return n;
}

void search_min()
{
    if(ndown < nup)
        if(fact((ndown + nup)/2) >= p)
            nup = (ndown + nup)/2, search_min();
}

int main()
{
    std::ifstream f("fact.in");
    std::ofstream g("fact.out");

    f>>p;

    if(p == 0) nup = 1;

    else if(p >= 0)
        ndown = p*4, nup = p*5, search_min();

    while(fact(nup-1) > p)
        nup--;

    if(fact(nup) > p && fact(nup-1) < p)
        g<<-1;
    else
        g<<nup<<"\n";

    return 0;
}