Pagini recente » Cod sursa (job #1532135) | Cod sursa (job #2085985) | Cod sursa (job #1403632) | Cod sursa (job #58355) | Cod sursa (job #1141637)
#include <fstream>
using namespace std;
ifstream f("frac.in");
ofstream g("frac.out");
long long t,a,b,n,i,j,cnt,k,last,sol,p,dr,st,mid,p1;
long long v[100005];
int main() {
f>>b>>p1;
n=0;
for(i=2;i*i<=b;i++) {
if(b%i==0)
v[++n]=i;
while(b%i==0) {
b/=i;
}
}
if(b!=1)
v[++n]=b;
last=(1LL<<n)-1;
st=1;dr=(1LL<<6)+1;
while(st<=dr) {
mid=st+(dr-st)/2;
sol=mid;
for(i=1;i<=last;i++) {
cnt=0;p=1;
for(j=0;j<n;j++)
if(((i>>j)&1LL)==1LL) {
cnt++;
p*=v[j+1];
}
if(cnt%2==0)
sol+=mid/p;
else
sol-=mid/p;
}
if(sol>=p1)
dr=mid-1;
else
st=mid+1;
}
g<<st<<"\n";
return 0;
}