Chúng ta được cho một số n, chúng ta phải tìm số lớn hơn n với một bit bộ nhiều hơn n trong biểu diễn nhị phân của nó.
Chữ số 1 trong biểu diễn nhị phân được gọi là bit set.
Hãy xem một ví dụ.
Đầu vào
124
Đầu ra
125
Thuật toán
-
Khởi tạo số n .
-
Viết một hàm lấy số lượng bit đã đặt.
-
Khởi tạo biến lặp với n + 1 .
-
Viết một vòng lặp vô hạn.
-
Kiểm tra số lượng bit đã đặt cho các số lớn hơn n .
-
Trả lại số khi bạn tìm thấy nó.
-
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong C ++
#include <bits/stdc++.h>
using namespace std;
int getSetBitsCount(int n) {
int count = 0;
while (n) {
if (n % 2 == 1) {
count += 1;
}
n /= 2;
}
return count;
}
int getNextGreaterElementWithSameSetBits(int n) {
int setBitsCount = getSetBitsCount(n);
int i = n + 1;
while (true) {
if (setBitsCount + 1 == getSetBitsCount(i)) {
return i;
}
i += 1;
}
}
int main() {
int n = 124;
cout << getNextGreaterElementWithSameSetBits(n) << endl;
return 0;
} Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
125