Pagini recente » Cod sursa (job #1256860) | Cod sursa (job #582866)
Cod sursa(job #582866)
#include<stdio.h>
int d[20],p[20],a,b,nr;
void div(int a)
{
int r;
for(r=2 ; r*r<=a ; r++)
{
if(a%r==0)
{
d[++nr] = r;
while(a%r==0)
{
a/=r;
p[nr]++;
}
}
}
if(a!=1)
{
d[++nr] = a;
p[nr] = 1;
}
}
long long putere(long long n,long long s)
{
long long c=0;
while(n>=s)
{
c+=n/s;
n/=s;
}
return c;
}
bool divizibil(long long n)
{
int i;
for(i=1;i<=nr;++i)
{
if(putere(n,d[i])<p[i]*b)
return false;
}
return true;
}
long long caut()
{
long long i,pas = (long long)1<<60;
for(i=0;pas!=0;pas/=2)
{
if(!divizibil(i+pas))
i+=pas;
}
return i+1;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%d%d",&a,&b);
div(a);
printf("%lld\n",caut());
return 0;
}