Pagini recente » Cod sursa (job #1433101) | Cod sursa (job #1432180) | Cod sursa (job #1254078) | Cod sursa (job #1742028) | Cod sursa (job #492834)
Cod sursa(job #492834)
#include <fstream>
using namespace std;
long long baza[1<<5],ex[1<<5],m;
ifstream in("gfact.in");
ofstream out("gfact.out");
void desc(long long n,long long q)
{
long long i,p;
for (i=2;i*i<=n;i++)
if (n%i==0)
{
for (p=0;n%i==0;p++,n/=i);
baza[++m]=i;
ex[m]=p*q;
}
if (n!=1)
{
baza[++m]=n;
ex[m]=q;
}
}
long long putere(long long n,long long p)
{
long long nr=0;
while (n)
{
n/=p;
nr+=n;
}
return nr;
}
bool verif(long long n)
{
for (long long i=1;i<=m;i++)
if (putere(n,baza[i])<ex[i])
return false;
return true;
}
long long bs()
{
long long i,step=(long long)1<<60;
for (i=0;step;step>>=1)
if (!verif(i+step))
i+=step;
return i+1;
}
int main()
{
long long p,q;
in>>p>>q;
desc(p,q);
out<<bs()<<"\n";
return 0;
}