Cod sursa(job #1565089)

Utilizator alexb97Alexandru Buhai alexb97 Data 10 ianuarie 2016 13:28:32
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define MAX 2000000000
using namespace std;

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

int p, n;

int Fact(int x);


int main()
{
    is >> p;
    int l = 1, r = MAX, mij;
    bool ok = false;
    int prec;
    if(p == 0)
    {
        os << 1;
        is.close();
        os.close();
        return 0;
    }
    while(l <= r && !ok)
    {
        mij = (l + r)/2; // l+(r - l)/2;
        prec = Fact(mij);
        if(prec == p) ok = true;
        if(prec < p)l = mij + 1;
        else r = mij-1;
    }
    if(ok)
    {
        while(mij % 5) mij--;
        os << mij << '\n';
    }
    else
        os << -1 << '\n';

    is.close();
    os.close();
    return 0;
}

int Fact(int x)
{
    int a = 5, b = 0;
    while(x/a)
    {
        b += x/a;
        a *= 5;
    }
    return b;
}