Cod sursa(job #1888965)

Utilizator mesbotMeszaros Botond mesbot Data 22 februarie 2017 14:04:21
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

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

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

    return (n >= p);
}

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

    return n;
}

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

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

    f>>p;

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

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

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

    return 0;
}