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