Pagini recente » Cod sursa (job #486311) | Cod sursa (job #2929269) | Cod sursa (job #3004210) | Cod sursa (job #1048942) | Cod sursa (job #3177695)
#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;
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});
if (x==1)
{
fout<<1;
return 0;
}
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;
}