Pagini recente » Cod sursa (job #1307287) | Cod sursa (job #1103583) | Cod sursa (job #1186731) | Cod sursa (job #860990) | Cod sursa (job #1557305)
#include <stdio.h>
using namespace std;
long long cauta(int p, int q){
long long st=1, dr, mid, x, put;
dr=5000000000000000000;
while(dr-st>1){
mid=(st+dr)/2;
x=p;
put=0;
while(x<=mid){
put=put+mid/x;
x*=p;
}
if(put<q)
st=mid;
else
dr=mid;
}
return dr;
}
int main()
{
int p, q, div, put;
long long sol, nr;
FILE *fi=fopen("gfact.in", "r"), *fo=fopen("gfact.out", "w");
fscanf(fi, "%d%d", &p, &q);
div=2;
sol=0;
while(div*div<=p){
put=0;
while(p%div==0){
p/=div;
put++;
}
put*=q;
nr=cauta(div,put);
if(nr>sol)
sol=nr;
div++;
}
if(p>1){
nr=cauta(p,q);
if(nr>sol)
sol=nr;
}
fprintf(fo, "%lld", sol);
fclose(fi);
fclose(fo);
return 0;
}