Cod sursa(job #2377842)

Utilizator DajaMihaiDaja Mihai DajaMihai Data 11 martie 2019 11:23:27
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;

ifstream cin ("fact.in");
ofstream cout ("fact.out");

long long int dr = 500000000;

int main()
{
    long long int p, fr5, st = 1, mid;
    cin >> p;
    if( p == 5 )
    {
        cout << -1;
        return 0;
    }
    else if( !p )
    {
        cout << 1;
        return 0;
    }
    int x;
    while(st < dr)
    {
        mid = (st + dr) / 2;
        fr5 = 0;
        x = 5;
        while(x <= mid)
        {
            fr5 += mid / x;
            x = x * 5;
        }
        if( fr5 >= p ) dr = mid;
        else if( fr5 < p ) st = mid + 1;
    }
    fr5 = 0;
    x = 5;
    while(x <= st)
    {
        fr5 += st / x;
        x = x * 5;
    }
    if(fr5 == p)
        cout << st;
    else cout << -1;
    return 0;

}