Cod sursa(job #1454381)

Utilizator PatrunjeluMarginean Bogdan Alexandru Patrunjelu Data 26 iunie 2015 12:56:21
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

unsigned long trailingZeroes(long n)
{
    unsigned long powOfFive = 5;
    unsigned long divRes = n / powOfFive;
    unsigned long zeroCount = 0;
    while (divRes != 0)
    {
        zeroCount += divRes;
        powOfFive *= 5;
        divRes = n / powOfFive;
    }
    return zeroCount;
}

unsigned long lowestOkNumber(long reqZeroes)
{
    for (unsigned long i = 0; ; i += 1)
    {
        int zeroes = trailingZeroes(i);
        if (zeroes == reqZeroes)
        {
            return i;
        }
        else if (zeroes > reqZeroes)
        {
            return -1;
        }
    }
}

int main()
{
    std::ifstream in("fact.in");
    unsigned long num = 0;
    in >> num;
    in.close();
    std::ofstream out("fact.out");
    out << num == 0 ? 1 : lowestOkNumber(num);
    out.close();
}