Pagini recente » Cod sursa (job #2141268) | Cod sursa (job #1350416) | Cod sursa (job #116300) | Cod sursa (job #338713) | Cod sursa (job #359187)
Cod sursa(job #359187)
#include<stdio.h>
#define MAX 100100
const long long MAX_LONG = (long long)1<<60;
long long p[MAX],d[MAX],nr,q;
void decomp(long long &a)
{
long long n=a;
for(long long i=2;i*i<n;++i)
if(!(a%i))
{
d[nr]=i;
while(!(n%i)&&n)
{
n/=i;
p[nr]++;
}
++nr;
}
if(n>1)
{
d[nr]=n;
p[nr++]=1;
}
}
bool fact(long long b,long long i)
{
long long r=0;
while(b)
{
r+=b/d[i];
b/=d[i];
}
return r>=p[i]*q;
}
bool ok(long long b)
{
for(long long i=0;i<nr;++i)
if(!fact(b,i))
return false;
return true;
}
int main()
{
long long a;
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&a,&q);
decomp(a);
for(long long i=1;i<=MAX_LONG;++i)
if(ok(i))
{
printf("%lld",i);
return 0;
}
return 0;
}