Pagini recente » Cod sursa (job #108613) | Cod sursa (job #2321519) | Cod sursa (job #150688) | Cod sursa (job #2944563) | Cod sursa (job #3295224)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("frac.in");
ofstream cout("frac.out");
#define int long long
vector<int> div1;
signed main()
{
int n,k,i,j,st,dr,mij,y,prod;
cin>>n>>k;
for(i=2;i*i<=n;i++){
if(n%i==0){
while(n%i==0) n/=i;
div1.push_back(i);
}
}
if(n!=1) div1.push_back(n);
st=1;dr=(1ll)<<61;
while(st<=dr){
mij=(st+dr)/2;y=mij;
for(i=1;i<(1<<(div1.size()));i++){
prod=1;
for(j=0;j<div1.size();j++){
if(i&(1<<j)) prod*=-div1[j];
}
y+=mij/prod;
}
if(y<k) st=mij+1;
else dr=mij-1;
}
cout<<st;
return 0;
}