Cod sursa(job #2100369)

Utilizator xtreme77Patrick Sava xtreme77 Data 5 ianuarie 2018 15:58:30
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

long long zeros (int number) {
    long long put = 5LL;
    long long sum = 0;
    while (put <= number) {
        sum += number / put;
        put *= 5LL;
    }
    return sum;
}

int main() {
    ifstream input ("fact.in");
    ofstream output ("fact.out");

    int P;
    input >> P;

    int _left = 1;
    int _right = 5 * P;
    int solution = 0;

    while (_left <= _right) {
        int middle = (_left + _right) >> 1;

        if (zeros(middle) >= P) {
            solution = middle;
            _right = middle - 1;
        }
        else {
            _left = middle + 1;
        }
    }
    if (zeros(solution) != P) {
        output << -1 << '\n';
        return 0;
    }
    solution = solution - solution % 5;
    if (solution == 0) {
        output << 1 << '\n';
    }
    else {
        output << solution << '\n';
    }
    return 0;
}