Cod sursa(job #1593209)

Utilizator elevenstrArina Raileanu elevenstr Data 8 februarie 2016 13:33:30
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");
 long long p,q,a,b,i=2,ans;
long long caut(int x, int put)
{
    long long st=0, dr=1LL*p*q;
    while(st<=dr)
    {
        long long med=(st+dr)/2;
        long long px=x,nf=0;
        while(px<=med)
        {
            nf=nf+med/px;
            px=px*x;
        }
        if(nf<put)st=med+1;
        else dr=med-1;
    }
    return st;
}
int main()
{
    in>>p>>q;
    while(p>1)
    {   if(i*i>p)i=p;
        int put=0;
        while(p%i==0)
        {
            p=p/i;
            ++put;
        }
        put=put*q;
        long long act=caut(i,put);
        ans=max(ans,act);
        i++;
    }
    out<<ans;

    return 0;
}