Cod sursa(job #3307335)

Utilizator cont_superscoalaSuperScoala cont_superscoala Data 20 august 2025 12:22:23
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
/*
https://infoarena.ro/problema/fact
*/
#include <fstream>

using namespace std;

const int VMIN = 1;
const int VMAX = 5e8;

int nr_zero(int n)
{
    ///numarul de zerouri de la sfarsitul lui n!
    int nr_0 = 0;
    while (n >= 1)
    {
        ///nr_0 = n /= 5;
        nr_0 += n / 5;
        n /= 5;
    }
    return nr_0;
}

int caut_bin(int p)
{
    ///cautam binar cel mai mic n cu propr. ca n! are
    ///CEL PUTIN p zerouri la final
    int st = VMIN, dr = VMAX, rez = VMAX + 1;
    while (st <= dr)
    {
        int m = (st + dr) / 2;
        if (nr_zero(m) >= p)
        {
            rez = m;
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    return rez;
}

int main()
{
    ifstream in("fact.in");
    ofstream out("fact.out");
    int p;
    in >> p;
    int n = caut_bin(p);
    if (nr_zero(n) > p)
    {
        n = -1;
    }
    out << n << "\n";
    in.close();
    out.close();
    return 0;
}