Cod sursa(job #1405266)

Utilizator Mr.DoomRaul Ignatus Mr.Doom Data 28 martie 2015 23:36:38
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;

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

int p;

long long factorial(long long x);

int main()
{
    is >> p;
    long long lg;
    for ( lg = 1; lg < 5 * p; lg <<= 1 );
    long long pos = 0;
    for ( long long byte = lg; byte; byte >>= 1 )
        if ( byte + pos <= 5 * p && factorial(byte + pos) < p )
            pos += byte;
    if ( factorial(pos + 1) == p )
        os << pos + 1;
    else
        os << -1;

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

long long factorial(long long x)
{
    long long rez = 0;
    for ( int i = 5; i <= x; i *= 5 )
        rez += x / i;
    return rez;
}