Pagini recente » Cod sursa (job #1942995) | Cod sursa (job #2330566) | Cod sursa (job #217870) | Cod sursa (job #2119077) | Cod sursa (job #397792)
Cod sursa(job #397792)
#include <cstdio>
int p,q;
inline bool nasol(int p1,int p2)
{
return p2*q>p1;
}
inline int minimus(int x,int y)
{
return x < y ? x:y;
}
int putere(int n,int p)
{
int rez=0;
while(n)
{
rez+=n/p;
n/=p;
}
return rez;
}
bool desc(int x,int a)
{
int p1,p2,min=1<<30;
for(int i=2;i*i<=a;++i)
{
if(!(a%i))
{
p1=putere(x,i);
p2=0;
while (a%i==0)
{
p2++;
a/=i;
}
if (nasol(p1,p2))
return false;
}
}
if(a!=1)
{
p1=putere(x,a);
p2=1;
if (nasol(p1,p2))
return false;
}
return true;
}
int caut()
{
int i,pas=1<<30;
for(i=0;pas;pas>>=1)
if(!desc(i+pas,p))
i+=pas;
return 1+i;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%d%d",&p,&q);
printf("%d\n",caut());
return 0;
}