Pagini recente » Cod sursa (job #1377674) | Cod sursa (job #455527) | Cod sursa (job #949846) | Cod sursa (job #109816) | Cod sursa (job #782451)
Cod sursa(job #782451)
#include<fstream>
using namespace std;
ifstream f("Gfact.in");
ofstream g("Gfact.out");
long long i,p,q,nr;
long long li,ls,mij;
struct putere{
long long numar,putere;
};
putere v[101];
long long pute(long long x,int p)
{long long c=0;
while(x>p)
{
x/=p;
c+=x;
}
return c;
}
bool verif(long long x)
{for(int i=1;i<=nr;++i)
if(pute(x,v[i].numar)<v[i].putere)
return 0;
return 1;
}
int main()
{f>>p>>q;
for(i=2;i*i<=p;++i)
if(p%i==0)
{++nr;
v[nr].numar=i;
v[nr].putere=0;
while(p%i==0)
{++v[nr].putere;
p/=i;
}
v[nr].putere*=q;
}
if(p!=1)
{++nr;
v[nr].putere=q;
v[nr].numar=p;
}
li=1;
ls=(long long)1000000000*(long long)30000;
while(li<=ls)
{mij=(li+ls)/2;
if(!verif(mij))
li=mij+1;
else
if(!verif(mij-1))
break;
else
ls=mij-1;
}
g<<mij<<'\n';
return 0;
}