Cod sursa(job #2776270)

Utilizator PierrePierre Alex Pierre Data 19 septembrie 2021 10:05:55
Problema Factorial Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 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;
    int n = -1;
    int l = 1,r = 100000000,m,k;
    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 << n - n % 5;
    }
    else
    {
        fout << -1;
    }
    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;
}