题解
2025-08-03 10:04:20
发布于:广东
#include <iostream>
using namespace std;
int main() {
long long N;
int K;
cin >> N >> K;
int cnt = __builtin_popcountll(N);
if (cnt <= K) {
cout << 0 << endl;
return 0;
}
long long res = 0;
int remaining = cnt;
int i = 0;
while (remaining > K) {
while ((N >> i) & 1) i++;
int m = 0;
while (!((N >> (i + m)) & 1)) m++;
int t = 0;
while ((N >> (i + m + t)) & 1) t++;
res += (1LL << i);
remaining = remaining - t + 1;
N |= (1LL << (i + m));
i += m;
}
cout << res << endl;
return 0;
}
这里空空如也
有帮助,赞一个