Pagini recente » Cod sursa (job #2259584) | Cod sursa (job #2915389) | Cod sursa (job #1919510) | Cod sursa (job #1053981) | Cod sursa (job #3177696)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("gfact.in");
ofstream fout ("gfact.out");
long long sum,l,x,st,mij,dr,d,ok,i,nr,nrc;
struct el
{
long long d,nr;
};
vector <el> v;
int main ()
{
fin>>x>>nr;
if (x==1)
{
fout<<1;
return 0;
}
for (d=2; d*d<=x; d++)
{
if (x%d==0)
{
nrc=0;
while (x%d==0)
{
nrc++;
x/=d;
}
v.push_back ({d,nrc*nr});
}
}
if (x!=1)
v.push_back ({x,nr});
st=2;
dr=60000000000000;
while (st<=dr)
{
mij=(st+dr)/2;
ok=1;
for (i=0; i<v.size (); i++)
{
nr=v[i].d;
l=1;
sum=0;
while (l<=mij/nr)
{
l=l*nr;
sum+=mij/l;
}
if (sum<v[i].nr)
{
ok=0;
break;
}
}
if (ok==0)
st=mij+1;
else
dr=mij-1;
}
fout<<st;
return 0;
}