Pagini recente » Cod sursa (job #1606130) | Cod sursa (job #1206199) | Cod sursa (job #667646) | Cod sursa (job #766758) | Cod sursa (job #354170)
Cod sursa(job #354170)
#include<cstdio>
#define max 1<<60
#define maxnr 100
long long exponent[maxnr],factor[maxnr],q;
bool ok(long long n)
{
long long p,ok1=1,i,m,cp=p,c=n;
for(i=1;i<=factor[0];i++)
{
n=c;
p=factor[i];
m=0;
while(n)
m+=(n/=p);
if(m<q*exponent[i])
return false;
}
return true;
}
long long cb(long long st, long long dr)
{
long long i,pas;
pas=max;
for(i=0;pas;pas>>=1)
if(!ok(i+pas))
i+=pas;
return i+1;
}
int main()
{
long long i;
long long e=0,n=0,p=0;
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&p,&q);
i=2;
for(i=2 ; i*i<=p ; ++i)
{
e=0;
while(p%i==0)
{
e++;
p=p/i;
}
if(e>0)
{
factor[++factor[0]]=i;
exponent[++exponent[0]]=e;
}
}
if(p!=1)
{
factor[++factor[0]]=i;
exponent[++exponent[0]]=1;
}
n=cb(1,max);
printf("%lld",n);
}