思路没啥说的。。每次位置计算的时候有点烦,另外把二分的左端点固定到1写起来可能会比较方便...
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
typedef long long ll;
int r,n,m,l,q,p,k;
int main()
{
// freopen("in.txt","r",stdin);
while (cin>>n>>k)
{
int ans=0;
l=1;
r=n;
while (l<r)
{
m=(r)>>1;
// if (r % 2==0) m++;
if (k<=m)
{
ans+=(r-m);
k=m-k+1;
l=l;
r=m;
}
else
{
k=r-k+1;
l=l;
r=r-m;
}
}
cout<<ans+1<<endl;
}
return 0;
}