Cod sursa(job #735146)

Utilizator Theorytheo .c Theory Data 15 aprilie 2012 19:39:27
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int i,j, n, P;
int bs();
int read()
{
    long z;
    fin >> P;

if(P==0)
{
    fout << 1;
    return 0;
}
        z = bs();
        if(z > 0 )
        {
             while(z % 5)
                z--;
                fout<<z;
        }
        else
        fout << -1;



}
long numar(int x)
{
    long k = 5, nr =1, s = 0;
    while(nr < x)
    {
        nr *= k;
        s += x /nr;
    }
    return s;
}
int bs()
{
   long i, p = 1, u = 10 * P ,m;
   // m = ( p + u )/2 ;
    while(p <= u)
    {
        m = ( p + u ) /2;
       // fout << numar(m) <<'\n';
        if(numar(m) <= P)

            p = m + 1;
        else
            u = m - 1;
    }
    m = (p + u) /2;
    if(numar(m) > P)
        --m;
    if(numar(m) == P)
        return m;
    return -1;

}
int main()
{
    read();
    fin.close();
    fout.close();
    return 0;
}