Computer >> Máy Tính >  >> Lập trình >> C ++

Số nguyên lớn hơn tiếp theo có thêm một số bit đặt trong C ++

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