Cod sursa(job #2110679)

Utilizator constantin.gabrielConstantin Gabriel constantin.gabriel Data 21 ianuarie 2018 09:43:15
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long long p;
long long fact(long long n)
{
    long long s = 0;
    while (n)
    {
        s += n / 5;
        n /= 5;
    }

    return s;
}


int main()
{
    f>>p;
    if ( p == 0 )
    {
        g<<"1";
        return 0;
    }
    long long c;
    long long a = 0, b = 10000000000LL;
    long long ff;
    while ( a < b-1 )
    {
        c = (a + b)/2;
        ff = fact(c);

        if ( ff < p )
            a = c;//+1;
        else if ( ff > p )
            b = c;//-1;
        else
            break;
    }

    while ( c % 5 )
        --c;

    if ( fact(c) == p )
        g<<c;
    else
        g<<"-1";

    return 0;
}