Pagini recente » Cod sursa (job #93064) | Cod sursa (job #1006427) | Cod sursa (job #1738216) | Cod sursa (job #526517) | Cod sursa (job #2324069)
#include <bits/stdc++.h>
using namespace std;
ifstream f("frac.in");
ofstream g("frac.out");
long long n,p,lo,mi,hi,val;
int i,k,a[31];
void bkt(int poz,long long prod,int sgn)
{
if(poz==k+1)
{
if(prod==1)return;
val+=(mi/prod)*sgn;
return ;
}
bkt(poz+1,prod,sgn);
bkt(poz+1,prod*a[poz],-sgn);
}
int main()
{
f>>n>>p;
if(!(n&1))
{
a[++k]=2;
while(!(n&1))n>>=1;
}
for(i=3;i*i<=n;i+=2)
if(n%i==0)
{
a[++k]=i;
while(n%i==0)
n/=i;
}
if(n!=1)a[++k]=n;
lo=1,hi=1e18;
while(lo<hi)
{
mi=(lo+hi)/2;
val=0;
bkt(1,1,-1);
// g<<mi<<' '<<val<<'\n';
val=mi-val;
if(val<p)
lo=mi+1;
else
hi=mi;
}
g<<lo;
return 0;
}