Chuỗi nhị phân ban đầu "0". Mỗi lần lặp đảo bit và nối vào cuối. Sau n lần lặp, tìm bit thứ k. Ví dụ n=4, k=7 → chuỗi 0110100110010110, bit 7 là 1.
Mô phỏng: lặp n lần, mỗi lần tạo chuỗi đảo và nối.
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); }
Kết quả
7th character is: 1