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

Tìm bit thứ k trong một chuỗi nhị phân được tạo bởi các hoạt động đảo ngược và nối lặp lại trong C ++

Giả sử chúng ta có một chuỗi nhị phân s, ban đầu nó được gọi là "0". Bây giờ, trong mỗi lần lặp, hãy đảo ngược nó và nối nó, do đó sau lần lặp thứ n, chúng ta sẽ tìm thấy bit thứ k. Giả sử số lần lặp là 4 và k =7, vì vậy nó sẽ là -

Lặp lại Giá trị (Ban đầu là 0)
1 01
2 0110
3 01101001
4 0110100110010110

vì vậy thứ 7 bit là 1.

Trong mỗi lần lặp, hãy tìm phần bổ sung và nối thêm, do đó sau lần lặp thứ n, sẽ tìm thấy bit thứ k

Ví dụ

#include<iostream>
using namespace std;
string getComplement(string bin){
   string temp = "";
   for(int i= 0; i<bin.length(); i++){
      if(bin[i] == '0')
         temp += "1";
      else
         temp += "0";
   }
   return temp;
}
char getCharacter(string bin_str, int n, int k) {
   string res = bin_str;
   for(int i = 0; i<n; i++){
      res += getComplement(res);
   }
   return res[k];
}
int main() {
   int n = 4;
   string bin = "0";
   cout << 7 << "th character is: "<< getCharacter(bin, n, 7);
}

Đầu ra

7th character is: 1