Cod sursa(job #2944218)

Utilizator Sara.117Andrei Sara Sara.117 Data 22 noiembrie 2022 10:46:02
Problema Factorial Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("factorial.in");
ofstream fout("factorial.out");

long long int P;

long long int factorial(int n)
{
    long long int j = 1;

    for(int i = 1; i <= n; i++)
    {
        j *= i;
    }

    return j;
}

long long legendre(int k, long long n)
{
    long long p, numitor;
    p = 0;
    numitor = k;

    while(n >= numitor)
    {
        p += n / numitor;
        numitor *= k;
    }

    return p;
}

int bs(int st, long long int dr)
{
    long long int med, last = -1;
    long long int k;
    bool ok = 0;

    while(st <= dr)
    {
        med = st + (dr - st) / 2;
        k = legendre(5, med);


        if(k == P)
        {
            ok = 1;
            last = med;
            dr = med - 1;
        }
        else if(k > P)
        {
            last = med;
            dr = med - 1;
        }
        else
            st = med + 1;
    }



    if(ok == 0)
        return -1;

    return last;
}

int main()
{
    int ans;

    fin >> P;

    long long lin = 1ll << 62;

    ans = bs(1, lin);

    fout << ans;

    fin.close();
    fout.close();
    return 0;
}