Cod sursa(job #1799085)

Utilizator andreiugravuFMI Andrei Zugravu andreiugravu Data 5 noiembrie 2016 19:00:06
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
//Factorial

#include <fstream>

using namespace std;

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

#define DMAX 10000000

long long N, P;

long long nrZerouri(long long nr) {
    long long nrzero = 0, put5 = 5;
    while(nr/put5 > 0) {
        nrzero += nr/put5;
        put5 *= 5;
    }
    return nrzero;
}

long long cautareBinara(long long left, long long right) {
    if(left <= right) {
        long long middle = (left + right)/2, nr;
        nr = nrZerouri(middle);
        if(nr == P) return middle - middle%5;
        else if(nr > P) return cautareBinara(left, middle-1);
        else return cautareBinara(middle+1, right);
    }
    return 1;
}

int main()
{
    fin>>P;

    if(P == 0) { fout<<1; return 0; }
    N = cautareBinara(0, DMAX);

    fout<<N;

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

    return 0;
}