Cod sursa(job #1662328)

Utilizator DastasIonescu Vlad Dastas Data 24 martie 2016 17:52:24
Problema Factorial Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <iostream>

using namespace std;

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

const int maxp = 100000000;

int p;

int nrZerouri(int n)
{
    int nr = 0;
    while (n)
    {
        nr = nr + n / 5;
        n = n / 5;
    }

    return nr;
}

void solve()
{
    int st = 1, dr = maxp;
    while (st < dr)
    {
        int m = st + (dr - st) / 2; // echivalent (st + dr) / 2
        int nrZeros = nrZerouri(m);

        if (nrZeros == p)
        {
            out << m - (m % 5) << endl;
            return;
        }

        if (nrZeros < p)
        {
            st = m + 1;
        }
        else
        {
            dr = m - 1;
        }
    }

    out << -1 << endl;

    /*cout << st << ' ' << dr;
    if (nrZerouri(dr) == p)
    {
        out << dr << endl;
    }
    else
    {
        out << -1 << endl;
    }*/
}

int main()
{
    in >> p;
    solve();

    return 0;
}