Cod sursa(job #1471957)

Utilizator alexandru.ghergutAlexandru-Gabriel Ghergut alexandru.ghergut Data 15 august 2015 18:27:48
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

int getZeroes(int N)
{
    int result = 0, powerOf5 = 5, zeroes;

    do
    {
        zeroes = N / powerOf5;
        powerOf5 *= 5;
        result += zeroes;
    } while (zeroes);

    return result;
}

int binarySearch(int left, int right, int P)
{
    int middle;
    int zeroes;

    while (left <= right)
    {
        middle = left + (right - left) / 2;
        zeroes = getZeroes(middle);

        if (zeroes >= P)
            right = middle - 1;
        else
            left = middle + 1;
    }

    if (zeroes != P)
    {
        if (getZeroes(middle + 1) == P)
            return middle + 1;
        else
            return -1;
    }

    return middle;
}

int main()
{
    int P;
    ifstream f("fact.in");
    f >> P;
    f.close();

    ofstream g("fact.out");
    if (P == 0)
        g << 1;
    else
        g << binarySearch(0, P * 5, P);
    g.close();

    return 0;
}