Cod sursa(job #2610413)

Utilizator FLORENTIN-GIULIANO.DUMITRUDumitru Florentin Giuliano FLORENTIN-GIULIANO.DUMITRU Data 4 mai 2020 20:49:22
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

std::ifstream in("fact.in");
std::ofstream out("fact.out");

long nr(long val){
    long nr = 5;
    long h = 0;
    while (val / nr){
        h += (val / nr);
        nr *= 5;
    }
    return h;
}

int main()
{
    long val;
    in >> val;
    if (val == 0)
        out << "1";
    else {
        long stanga = 1, dreapta = 10 * val;
        long gasit = -1;
        while (stanga < dreapta) {
            long numar;
            long actual = (stanga + dreapta) / 2;
            numar = nr(actual);
            if (numar == val) {
                gasit = actual;
                break;
            } else if (numar > val)
                dreapta = actual-1;
            else
                stanga = actual+1;
        }
        if (gasit > 0)
            gasit = gasit - gasit%5;
        out << gasit;
    }
    in.close();
    out.close();
    return 0;
}