Cod sursa(job #2111930)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 22 ianuarie 2018 19:56:26
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

using namespace std;

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

int p[] = {1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};

int main()
{
    int val;
    fin >> val;

    if(val == 0)
    {
        fout << 1 << '\n';
        return 0;
    }

    bool ok = 1;
    int dr = val + 1, st = 100000000, rez = 0;
    while(dr <= st){
        int mid = (st + dr) / 2;

        int nrzero = 0;
        int nr = 1;
        while(p[nr] <= mid ){
            nrzero += (mid / p[nr]);
            if(nrzero > val)
            {
                st = mid - 1;
                ok = 0;
                break;
            }
            ++nr;
        }

        if(ok == 0){
            ok = 1;
            continue;
        }
        if(nrzero == val)
            st = mid - 1, rez = mid;
        else if(nrzero < val)
                dr = mid + 1;
        else
            st = mid - 1;
    }
    fout << rez << '\n';
    return 0;
}