Pagini recente » Cod sursa (job #1076769) | Cod sursa (job #117852) | Cod sursa (job #821044) | Cod sursa (job #3172085) | Cod sursa (job #2800874)
#include <iostream>
#include <fstream>
using namespace std;
long long int n,p,g,nr=0,di=0,d=3,put=0;
long long int putere(int n)
{
int pt=nr,s=0;
while(pt<=n)
{
s+=n/pt;
pt*=nr;
}
return s;
}
int main()
{
ifstream cin("gfact.in");
ofstream cout("gfact.out");
cin>>n>>p;
///*****************************************************************************************************************************************************************
long long int a=n;
while(a%2==0)
{
a=a/2;
put++;
}
if(put)
{
nr=2;
di=2;
put--;
while(put)
{
put--;
nr=nr*2;
}
}
while(d<=a)
{
long long int m=0;
put=0;
while(a%d==0)
{
a=a/d;
put++;
}
if(put)
{
m=d;
put--;
while(put)
{
put--;
m=m*d;
}
}
if(m>nr)
{
nr=m;
di=d;
}
d+=2;
}
///cout<<nr;
put=0;
a=nr;
d=di;
while(a%d==0)
{
put++;
a=a/d;
}
nr=d;
p*=put;
///cout<<nr<<" "<<p;
///***************************************************************************************************************************************************************************************
/*cin>>n;
cout<<putere(n);*/
long long int l=0,r=500000000,m,sol;
while(l<=r)
{
m=(l+r)/2;
if(putere(m)<p)
{
l=m+1;
}
else if(putere(m)==p)
{
sol=m;
r=m-1;
}
else if(putere(m)>p)
{
r=m-1;
}
}
cout<<sol;
return 0;
}