Pagini recente » Cod sursa (job #282660) | Cod sursa (job #1788955) | Cod sursa (job #2474563) | Cod sursa (job #97624) | Cod sursa (job #2372088)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
const int L=45;
const int ND=10;
int p,q,d[ND],e[ND],nd;
void descompunere(int n)
{
int dv=2;
while(dv*dv<=n)
{
if(n%dv==0)
{
d[nd]=dv;
while(n%dv==0)
{
e[nd]++;
n/=dv;
}
nd++;
}
dv++;
}
if(n>1)
{
d[nd]=n;
e[nd++]=1;
}
}
long long putere(long long n,int p)
{
long long r=0;
while(n>=p)
{
r+=n/p;
n/=p;
}
return r;
}
bool div(long long n)
{
int i;
for(i=0;i<nd;i++)
{
if(putere(n,d[i])<e[i]*q)
{
return false;
}
}
return true;
}
long long b()
{
long long pas=1LL << L,r=0;
while(pas!=0)
{
if(!div(r+pas))
{
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int f[10000];
int main()
{
int i;
cin>>p>>q;
descompunere(p);
cout<<b();
return 0;
}