মনে করুন আমাদের একটি বাইনারি স্ট্রিং s আছে, প্রাথমিকভাবে এটি বলুন "0"। এখন প্রতিটি ইটারেশনে এটি ইনভার্ট করুন, এবং অ্যাপেন্ড করুন, যেন n-তম ইটারেশনের পর, আমরা k-তম বিট পাই। মনে করুন ইটারেশনের সংখ্যা 4, এবং k = 7, তাহলে এটি হবে -
| ইটারেশন | মান (প্রাথমিক 0) |
|---|---|
| 1 | 01 |
| 2 | 0110 |
| 3 | 01101001 |
| 4 | 0110100110010110 |
তাই 7-তম বিট হল 1।
প্রতিটি ইটারেশনে, কমপ্লিমেন্ট বের করুন, এবং অ্যাপেন্ড করুন, যেন n-তম ইটারেশনের পর k-তম বিট পাওয়া যায়।
উদাহরণ
#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);
}
আউটপুট
7th character is: 1