#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int num = 1e3;
ll mi[num]={0,1};
ll n, k;
ll* p;
int i;
int main() {
cin >> n >> k;
for ( i = 1; mi[i] < n;)
mi[++i] = mi[i - 1] * 2;
while (k--&&n>0) {
p = lower_bound(mi, mi + i, n);
if (*p > n)
n -= *p / 2;
else
n -= *p;
}
if (n == 0)
cout << 0 << endl;
else
cout << *p / 2 - n << endl;
return 0;
}
第一个点
in:27 2
out:5
输出是对的,但wa