Cod sursa(job #2356415)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 26 februarie 2019 17:49:15
Problema GFact Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <cmath>

using namespace std;

typedef long long ll;
ll p , q;

inline bool verif(ll med)
{
    ll nr = 0;
    ll x = p;
    while(x <= med)
    {
        nr += (med/x);
        x *= p;
    }
    return (nr >= q);
}

int main()
{
    freopen("gfact.in","r",stdin);
    freopen("gfact.out","w",stdout);
    scanf("%I64d%I64d",&p,&q);
    ll st,dr,med;
    st = 1;
    dr = 2000000000000000;
    ll ans = -1;
    while(st<=dr)
    {
        med=(st+dr)>>1;
        if(verif(med))
        {
            ans = med;
            dr = med-1;
        }
        else
            st = med+1;
    }
    printf("%lld",ans);
    return 0;
}