Cod sursa(job #1500271)

Utilizator gbibBacotiu Gabi gbib Data 11 octombrie 2015 17:53:30
Problema GFact Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");

long long nz(long long n,long long c)
{
    long long p=c,sol=0;
    while(p<=n)
    {
        sol+=(n/p);
        p*=c;
    }
    return sol;
}

long long bs(long long fact, long long put)
{
    long long s=1;
    long long d=2000000001;
    long long k,mij;
    while(s<=d)
    {
        mij=(s+d)/2;
        k=nz(mij,fact);
        if(k>=put)
        {
            d=mij-1;
        }
        else
        {
            s=mij+1;
        }
    }
    mij=(s+d)/2;
    k=nz(mij,fact);
    if(k<put)
    {
        mij++;
    }
    return mij;
}

int main()
{long long p,q,i;
in>>p>>q;
long long cp=p,d=2,mx=0;
while(cp!=1)
{
    long long nr=0;
    while(cp%d==0)
    {
        nr++;
        cp/=d;
    }
    if(nr)
    mx=max(mx,bs(d,nr+q-1));

    d++;
}
    out<<mx;
    return 0;
}