Cod sursa(job #1723233)

Utilizator liviu23Liviu Andrei liviu23 Data 30 iunie 2016 09:13:53
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#define ll long long
using namespace std;

ll countZeroes(ll n) {
    ll fact = 5, nZero=0;
    while (fact <= n) {
        nZero += n / fact;
        fact *= 5;
    }
    return nZero;
}

ll solve(ll p) {
    if (p == 0)
        return 1;
    ll ans = -1, st = 0, dr = p * 5, mij;
    while (st <= dr) {
        mij = (st + dr) / 2;
        int nZero = countZeroes(mij);
        if (nZero == p)
            ans = mij;
        if (nZero >= p)
            dr = mij - 1;
        else
            st = mij + 1;
    }
    return ans;
}

int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    ll p;
    fin >> p;
    fout << solve(p);
    return 0;
}