Pagini recente » Cod sursa (job #497222) | Cod sursa (job #2479823) | Cod sursa (job #2438333) | Cod sursa (job #1831555) | Cod sursa (job #1591205)
#include <stdio.h>
using namespace std;
int p, q;
long long find(int p, int q)
{
long long st = 1, dr = 5000000000000000000, mid, x, pow;
while(dr>st+1)
{
mid=(st+dr)/2;
x=p;
pow=0;
while(x<=mid)
{
pow=pow+mid/x;
x*=p;
}
if(pow<q)
st=mid;
else
dr=mid;
}
return dr;
}
int main()
{
freopen("gfact.in", "r", stdin);
freopen("gfact.out", "w", stdout);
scanf("%d %d", &p, &q);
long long ans = 0;
int f = 2;
while(p > 1)
{
int pow = 0;
if(f * f > p)
f = p;
while(p%f==0)
{
pow++;
p = p / f;
}
long long rez = find(f, pow*q);
if(rez > ans)
ans = rez;
f++;
}
printf("%d", ans);
return 0;
}