Pagini recente » Cod sursa (job #1727536) | Cod sursa (job #1783666) | Cod sursa (job #2447136) | Cod sursa (job #2932228) | Cod sursa (job #70215)
Cod sursa(job #70215)
#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++)
b[i]*=q;
for(i=1;i<=j;i++)
{
sol1=gf(t[i],b[i]);
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*tt;
while(r>l+1)
{
m=(l+r)/2;
mm=m;
pp=0;
while(mm)
{ pp+=mm/tt;
mm/=tt;
}
if(pp>=bb)r=m;
else l=m;
}
return r;
}