Pagini recente » Cod sursa (job #1896069) | Cod sursa (job #116568) | Cod sursa (job #185422) | Cod sursa (job #1288508) | Cod sursa (job #292671)
Cod sursa(job #292671)
#include <stdio.h>
long long A, put;
long long putere(long long x,long long y)
{
long long ret = 0;
while (x)
{
ret += x/y;
x/=y;
}
return ret;
}
long long min(long long nr,long long x)
{
long long ret=0;
long long k = 1<<30;
k = k*k;
for (;k>0;k/=2)
if (putere(ret+k,nr) < x)
ret += k;
++ret;
return ret;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld", &A, &put);
long long ret = 0;
for (long long i=2;i*i<=A;++i)
if (A % i == 0)
{
long long cnt = 0;
while (A % i == 0)
++cnt,
A /= i;
long long tmp = min(i,cnt*put);
if (ret < tmp)
ret = tmp;
}
if (A > 1)
{
long long tmp = min(A,put);
if (ret < tmp)
ret = tmp;
}
printf("%lld\n", ret);
return 0;
}