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