Haizz, câu 3 làm hơn 1h mà không ra. Em thấy cũng là flip các bit 0 của X với (n-1) lần thì được nhưng vấn đề là có xen kẽ bit 1 ở giữa nhưng lại không hanlde được
class Solution {
public:
long long minEnd(int n, int x) {
if (n == 1) return x;
bool bitZero[32];
int bit[32];
for (int i = 0; i < 32; i++) {
if (((1 << i) & x) == 0) {
bitZero[i] = true;
}
}
int t = 0;
for (int i = 1; i <= n-1; i++) {
int numbit = (t > 0) ? static_cast<int>(ceil(log2(t))) : 0;
if (bitZero[numbit]) {
t = t + 1;
} else {
t = t + x + (1 << numbit);
}
}
return t + x;
}
};