Cod sursa(job #2612179)

Utilizator dariahazaparuHazaparu Daria dariahazaparu Data 8 mai 2020 16:15:33
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

int nr = 0;

int nr_0(int n) {
    int putere = 5;
    int nr = 0;
    while (n/putere) {
        nr += n/putere;
        putere *= 5;
    }
    return nr;
}

int main() {

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

    int p;
    int nr = -1;

    fin >> p;
    if (!p) {
        fout << 1;
        return 0;
    }
    else {
        int st = 0;
        int dr = 5*p;
        while (st <= dr) {
            int mijloc = (st + dr) /2;
            if (nr_0(mijloc) == p) {
                nr = mijloc - mijloc%5;
                // in caz ca e ceva de genul 17.5 sa se ajunga la minim, adica 15
                break;
            } else {
                if (nr_0(mijloc) < p) {
                    st = mijloc + 1;
                } else {
                    dr = mijloc - 1;
                }
            }
        }
    }
    fout << nr;
    return 0;
}