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

Số cao hơn tiếp theo với cùng 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 cùng số bit đặt với 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

143

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ố bằng số bit đã đặt của n.

    • Trả lại số khi bạn tìm thấy nó.

    • Tăng số lượng.

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 == 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.

143