Cod sursa(job #2790877)

Utilizator Stefan_GhinescuGhinescu Stefan-George Stefan_Ghinescu Data 29 octombrie 2021 18:16:04
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <cmath>

using namespace std;

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

const int BIG = (1<<31) - 1;

int p;

int zerouri(int n)
{
    int s = 0;
    for (int i = 5; n / i > 0; i *= 5)
        s += n / i;
    return s;
}

int bs()
{
    int st = 0, dr = BIG, mij = dr - (dr - st) / 2, idk;
    while (st <= dr)
    {
        idk = zerouri(mij);
        if (idk == p)
        {
            dr = mij - 1;
        }
        if (idk > p)
        {
            dr = mij - 1;
        }
        if (idk < p)
        {
            st = mij + 1;
        }
        mij = dr - (dr - st) / 2;
    }
    return st;
}

int main()
{
    fin >> p;
    if (p == 0)
    {
        fout << 1;
        return 0;
    }
    if (p == 1)
    {
        fout << 5;
        return 0;
    }
    if (p == 2)
    {
        fout << 10;
        return 0;
    }
    fout << bs();
    return 0;
}