Pagini recente » Cod sursa (job #1393921) | Cod sursa (job #1315294) | Cod sursa (job #2610517) | Cod sursa (job #1492925) | Cod sursa (job #709151)
Cod sursa(job #709151)
#include <cstdio>
#define LE 100000
#define inf 1200000000000
#define ll long long
using namespace std;
ll i,j,n,P,k,v[LE],N;
ll XOX(ll val) {
ll TOT=0,FACT;
for(i=1; i<=k; ++i) {
TOT+=val/v[i];
FACT=v[i]*v[j];
for(j=1; j<i; ++j) TOT-=val/FACT;
}
return TOT;
}
ll caut() {
ll step=0,poz=0;
for( step=1; step<=20; step*=2);
for( poz=0; step; step/=2)
if (poz+step-XOX(poz+step)<P) poz+=step;
return poz+1;
}
int main() {
freopen("frac.in","r",stdin);
freopen("frac.out","w",stdout);
scanf("%lld%lld",&n,&P);
for(i=2,N=n; i*i<n; ++i) if (N%i==0) {
v[++k]=i;
while (N%i==0) N/=i;
}
if (N!=1) v[++k]=N;
printf("%lld\n",caut());
return 0;
}