Pagini recente » Cod sursa (job #650533) | Cod sursa (job #383000) | Monitorul de evaluare | Cod sursa (job #849045) | Cod sursa (job #3330705)
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int p, q, cp;
cin>>p>>q;
cp=p;
map<int, int> mp;
while(p%2==0)
{
mp[2]+=q;
p/=2;
}
int div=3;
while(p>1 && div<=p)
{
while(p%div==0)
{
mp[div]+=q;
p/=div;
}
div+=2;
}
int l=-1, r=cp*1e2, mid;
while(l<r-1)
{
mid=(l+r)/2;
int ok2=0;
for(auto it:mp)
{
int x=it.first, y=it.second;
int nr=0, ok=0, cc=x;
while(nr<y)
{
if(mid/cc==0)
{
ok=1;
break;
}
nr+=mid/cc;
cc*=x;
}
if(ok==1)
{
ok2=1;
break;
}
}
if(ok2==0)
r=mid;
else
l=mid;
}
cout<<r;
return 0;
}