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