Pagini recente » Cod sursa (job #1816340) | Cod sursa (job #82797) | Cod sursa (job #2599730) | Cod sursa (job #751523) | Cod sursa (job #70210)
Cod sursa(job #70210)
#include<stdio.h>
long long int p,q,i,j,t[15],b[15],sol1,sol,l,r,m,mm,pp;
long long int gf(long long int tt,long long int bb);
int main()
{
FILE *f,*g;
f=fopen("gfact.in","r");
g=fopen("gfact.out","w");
fscanf(f,"%lld%lld",&p,&q);
for(i=2;;i++)
{ if(i*i>p)break;
if(p%i==0)
{
j++;t[j]=i;
while(p%i==0){ b[j]++;p/=i;}
}
}
if(p>1)
{j++;t[j]=p;b[j]=1;}
for(i=1;i<=j;i++)
{
sol1=gf(t[j],b[j]);
sol=(sol>sol1)?sol:sol1;
}
fprintf(g,"%lld",sol);
fcloseall();
return 0;
}
long long int gf(long long int tt,long long int bb)
{
l=1;r=bb*q;
while(r>l+1)
{
m=(l+r)/2;
mm=m*tt;
pp=0;
while(mm)
{ pp+=mm/tt;
mm/=tt;
}
if(pp>=bb)r=m;
else l=m;
}
return r*tt;
}