Cod sursa(job #2989885)

Utilizator Redstoneboss2Fabian Lucian Redstoneboss2 Data 7 martie 2023 10:42:24
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
#include <climits>

using namespace std;

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

unsigned long long numberOfFactorialZeroes(unsigned long long number);

int main(){

    unsigned long long numberOfZeroesRequired;

    fin >> numberOfZeroesRequired;

    unsigned long long left = 1, right = ULLONG_MAX, middle, numberOfZeroes, numberFound = 0;

    while(left <= right){
        middle = left + (right - left) / 2;
        numberOfZeroes = numberOfFactorialZeroes(middle);

        if(numberOfZeroes < numberOfZeroesRequired){
            left = middle + 1;
        }else{
            numberFound = middle;

            if(right == 0)
                break;

            right = middle - 1;
        }
    }
    numberOfZeroes = numberOfFactorialZeroes(numberFound);

    if(numberOfZeroes == numberOfZeroesRequired)
        fout << numberFound;
    else
        fout << "-1";

    return 0;
}

unsigned long long numberOfFactorialZeroes(unsigned long long number){
    unsigned long long numberOfZeroes = 0, powersOf5 = 5;

    while(powersOf5 <= number){
        numberOfZeroes += number / powersOf5;
        powersOf5 *= 5;
    }

    return numberOfZeroes;
}