Pagini recente » Cod sursa (job #1845054) | Cod sursa (job #226958) | Cod sursa (job #902661) | Cod sursa (job #2347924) | Cod sursa (job #369161)
Cod sursa(job #369161)
#include<stdio.h>
//#include<dos.h>
//#include<time.h>
//#include<conio.h>
long long n,p,per,lo=0,hi,mid,var,in;
//clock_t start,end;
int verif(long long x);
long long det();
long long cautbin();
int main()
{
// clrscr();
//start=clock();
FILE*f=fopen("frac.in","r");
fscanf(f,"%lld%lld",&n,&p);
fclose(f);
FILE*g=fopen("frac.out","w");
fprintf(g,"%lld",cautbin());
fclose(g);
//end=clock();
//printf("%f",(end-start)/CLK_TCK*1000);
return 0;
}
int verif(long long x)
{
long long a,b,r;
a=n;
b=x;
r=a%b;
while(r)
{
a=b;b=r;r=a%b;
}
//if(b>1)return 0;
//return 1;
return (!(b-1));
}
long long det()
{
long long sd=mid,contor=0;
int c;
if(n%2==0)c=2;
else c=1;
if(sd%2==0&&c%2==0)--sd;
var=0;
for(sd;sd>=in&&contor<=p;sd-=c)
if(verif(sd))
{++contor;if(!var)var=sd;}
return contor;
}
long long cautbin()
{
hi=4000000000;in=1;
long long q;
while(lo<=hi)
{
mid=lo+(hi-lo)/2;
q=det();
if(q==p)lo=hi+1;
if(q>p)hi=mid-1;
if(q<p){p-=q;in=mid;lo=mid+1;}
}
return var;
}