Cod sursa(job #2194720)

Utilizator AndreiVisoiuAndrei Visoiu AndreiVisoiu Data 14 aprilie 2018 10:57:04
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

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

long long P;

const int maxN = 1000000003;
long long zeroFinal(long long n) {
    long long r = 0, exp = 5;
    while (exp <= n) {
        r += n / exp;
        exp *= 5;
    }

    return r;
}

int cauta(int x) {
    int p = 1, u = maxN;
    while(p <= u) {
        int m = (p+u) / 2;
        long z = zeroFinal(m);
        if(z == P)
            return m-m%5;
        if(P >= z)
            p = m+1;
        else
            u = m-1;
    }
    return -1;
}

int main()
{
    in >> P;
    if(P == 0) out << "1\n";
    else out << cauta(P) << '\n';
    return 0;
}