Cod sursa(job #2330893)

Utilizator draducanuDragos Raducanu draducanu Data 28 ianuarie 2019 22:03:57
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
//
// Created by dragos on 28.01.2019.
//

#include <iostream>
#include <fstream>

using namespace std;

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

int zero(int n) {
    int k = 5;
    int sol = 0;
    while (k <= n) {
        sol += n / k;
        k *= 5;
    }
    return sol;
}

int findNr(int p) {
    int mij;
    int min;
    int max = 5 * p;
    while (min <= max) {
        mij = (min + max) / 2;
        int nrz = zero(mij);
        if (nrz == p) {
            return mij / 5 * 5;
        }
        if (nrz < p) {
            min = mij + 1;
        } else if (nrz > p) {
            max = mij - 1;
        }
    }

    return -1;
}

int p;

int main() {

    fin >> p;

    if (p == 0) {
        fout << 1;
    } else {
        fout << findNr(p);
    }

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

    return 0;
}