Cod sursa(job #2784985)

Utilizator mihai03Mihai Grigore mihai03 Data 17 octombrie 2021 19:43:16
Problema Factorial Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

int nr0(int n) // functie care ne spune cate zerouri sunt la sfarsitul lui n!
{
    int rez = 0;
    int power = 5;

    while (power <= n)
    {
        rez += n / power;
        power *= 5;
    }
    return rez;
}

int main()
{
    int p;
    f >> p;

    if(p == 0)
    {
        g << 1;
        return 0;
    }

    int st = 1, dr = INT_MAX - 1;
    // g << "dr: " << dr << endl;
    int mid;

    while (st <= dr)
    {
        mid = (st + dr) / 2;
        int zero = nr0(mid);
        // g << "zero: " << zero << "\n";
        if (zero == p)
        {
            break;
        }
        else if (zero > p)
        {
            dr = mid - 1;
        }
        else
            st = mid + 1;
    }

    // g << "mid: " << mid << endl;

    if (nr0(mid) == p)
    {
        ++mid;
        do
        {
            --mid;
        } while (nr0(mid) == p);
        g << mid + 1;
    }
    else
        g << -1;
    return 0;
}