Pagini recente » Cod sursa (job #70799) | Cod sursa (job #447055) | Cod sursa (job #278405) | Cod sursa (job #2388477) | Cod sursa (job #2629379)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("frac.in");
ofstream out("frac.out");
#define ll long long
ll A,B,fact[51];
void solve(){
ll t = 0;
for(int i=2;i*i<=B;i++)
if(B % i==0){
while(B % i==0)
B/=i;
fact[++t]=i;
}
if(B != 1)fact[++t]=B;
ll dr=1ll<<61 ,st=1;
while(st<=dr){
ll mid=(st+dr)/2,ans;
ans=mid;
for(int i = 1;i < (1 << t); ++i){
ll prod = 1;
for(int j = 0;j <=t; ++j)
if(((1 << j) & i)>0)
prod*=-fact[j + 1];
ans+= mid/prod;
}
if( ans < A)
st =mid+1;
else
dr=mid-1;
}
out <<st;
}
int main(){
in >>B>>A;
solve();
return 0;
}