Pagini recente » Cod sursa (job #1609621) | Cod sursa (job #205327) | Istoria paginii utilizator/iuhaszrobert | Monitorul de evaluare | Cod sursa (job #292664)
Cod sursa(job #292664)
#include <stdio.h>
int A, put;
int putere(int x,int y)
{
int ret = 0;
while (x)
{
ret += x/y;
x/=y;
}
return ret;
}
int min(int nr,int x)
{
int ret=0;
for (int k=1<<30;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("%d%d", &A, &put);
int ret = 0;
for (int i=2;i*i<=A;++i)
if (A % i == 0)
{
int cnt = 0;
while (A % i == 0)
++cnt,
A /= i;
int tmp = min(i,cnt*put);
if (ret < tmp)
ret = tmp;
}
if (A > 1)
{
int tmp = min(A,put);
if (ret < tmp)
ret = tmp;
}
printf("%d\n", ret);
return 0;
}