Cod sursa(job #2614451)

Utilizator dragonfire45Andrew Alexander dragonfire45 Data 11 mai 2020 19:13:29
Problema Factorial Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int NumberOfZeros(int number) {
    int denominator = 5;
    int numberOfZeros = 0;
    while (denominator <= number) {
        numberOfZeros += number / denominator;
        denominator *= 5;
    }
    return numberOfZeros;
}

int main() {

    int P; // reprezinta numarul de zerouri
    fin >> P;

    if (P == 0) {
        fout << 1;
    } else {
        int left = 1;
        int right = 10000000;
        while (left <= right) {
            int mid = (left + right) >> 1;
            int zeros = NumberOfZeros(mid);
            if (P == zeros) {
                mid -= mid % 5;
                fout << mid;
                //cout << mid;
                return 0;
            } else if (P < zeros) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        fout << -1;
    }

    fin.close();
    fout.close();

    return 0;
}