#include <bits/stdc++.h>
using namespace std;
int uniqueDecimalRepresentations(const std::string& binary) {
std::unordered_set<int> uniqueDecimals;
int n = binary.size();
// Iterate through each character in the binary string
for (int i = 0; i < n; i++) {
// If the current character is '0', we add 0 to the set
if (binary[i] == '0') {
uniqueDecimals.insert(0);
} else {
// If the current character is '1', we iterate through the rest of the string
// and convert the binary substring to decimal and add it to the set
int num = 0;
for (int j = i; j < n; j++) {
num = num * 2 + (binary[j] - '0');
uniqueDecimals.insert(num);
}
}
}
// The size of the set gives us the count of unique decimal representations
return uniqueDecimals.size();
}
int main() {
std::string binary = "011";
std::cout << uniqueDecimalRepresentations(binary) << std::endl; // Output: 3
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgdW5pcXVlRGVjaW1hbFJlcHJlc2VudGF0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgYmluYXJ5KSB7CiAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8aW50PiB1bmlxdWVEZWNpbWFsczsKICAgIGludCBuID0gYmluYXJ5LnNpemUoKTsKCiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGJpbmFyeSBzdHJpbmcKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzICcwJywgd2UgYWRkIDAgdG8gdGhlIHNldAogICAgICAgIGlmIChiaW5hcnlbaV0gPT0gJzAnKSB7CiAgICAgICAgICAgIHVuaXF1ZURlY2ltYWxzLmluc2VydCgwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXMgJzEnLCB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIHN0cmluZwogICAgICAgICAgICAvLyBhbmQgY29udmVydCB0aGUgYmluYXJ5IHN1YnN0cmluZyB0byBkZWNpbWFsIGFuZCBhZGQgaXQgdG8gdGhlIHNldAogICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgICAgIG51bSA9IG51bSAqIDIgKyAoYmluYXJ5W2pdIC0gJzAnKTsKICAgICAgICAgICAgICAgIHVuaXF1ZURlY2ltYWxzLmluc2VydChudW0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIFRoZSBzaXplIG9mIHRoZSBzZXQgZ2l2ZXMgdXMgdGhlIGNvdW50IG9mIHVuaXF1ZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9ucwogICAgcmV0dXJuIHVuaXF1ZURlY2ltYWxzLnNpemUoKTsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnN0cmluZyBiaW5hcnkgPSAiMDExIjsKICAgIHN0ZDo6Y291dCA8PCB1bmlxdWVEZWNpbWFsUmVwcmVzZW50YXRpb25zKGJpbmFyeSkgPDwgc3RkOjplbmRsOyAvLyBPdXRwdXQ6IDMKCiAgICByZXR1cm4gMDsKfQo=