Cod sursa(job #1727345)

Utilizator hantoniusStan Antoniu hantonius Data 10 iulie 2016 16:33:55
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

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

const long long maxp = 1LL << 61; // LL doar pentru long long
long long p;

long long zeros(long long x) {
    long long nr = 0;
    while (x != 0) {
        nr = nr + (x / 5);
        x = x / 5;
    }
    return nr;
}

void solve() {
    long long st=1, dr=maxp, mij, nrzeros;

    if (p == 0) {
        fout << 1LL;
        return;
    }

    while (st < dr) {
        mij = (st + dr) / 2; //echivalent
        nrzeros = zeros(mij);
        if (nrzeros == p) {
            fout << mij - (mij%5);
            return;
        }
        if (nrzeros < p)
            st = mij + 1;
        else
            dr = mij - 1;
    }
    fout << -1;
}

int main()
{
    fin >> p;
    solve();
    return 0;
}