Cod sursa(job #2776286)

Utilizator PierrePierre Alex Pierre Data 19 septembrie 2021 10:31:09
Problema Factorial Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int nr_de_zerouri(int n);

int main()
{
    int p;
    fin >> p;
    if(p == 0)
    {
        fout << 1;
    }
    else
    {
        int l = 1, r =100000000, m, k, n = -1;
        while(l <= r)
        {
            m = (l + r) / 2;
            k = nr_de_zerouri(m);
            if(k == p)
            {
                n = m;
                break;
            }
            else if(k > p)
            {
                r = m - 1;
            }
            else
            {
                l = m + 1;
            }
        }
        if(n == -1)
        {
            fout << -1;
        }
        else
        {
            fout << n - n % 5;
        }
    }
    fin.close();
    fout.close();
    return 0;
}

int nr_de_zerouri(int n)
{
    int nr = 0;
    for(int i = 5; n / i >= 1; i *= 5)
    {
        nr += n / i;
    }
    return nr;
}