#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
unsigned long long stringToNumber(string const& s)
{
size_t i = 0;
unsigned long long num = 0;
for (auto it = s.rbegin(); it != s.rend(); ++it, ++i )
{
if (*it != '0')
{
num += 1ULL << i;
}
}
return num;
}
int getStepsTo1(unsigned long long num)
{
long int count = 0;
while (num != 1 )
{
if (num % 2 == 0)
num /= 2;
else
num += 1;
count += 1;
}
return count;
}
int main()
{
string s = "1111011110000011100000110001011011110010111001010111110001";
unsigned long long int dec = stringToNumber(s);
cout << "Number: " << dec << endl;
// dec = 278675673186014705;
int count = getStepsTo1(dec);
cout << "Steps to 1: " << count << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bnNpZ25lZCBsb25nIGxvbmcgc3RyaW5nVG9OdW1iZXIoc3RyaW5nIGNvbnN0JiBzKQp7CglzaXplX3QgaSA9IDA7Cgl1bnNpZ25lZCBsb25nIGxvbmcgbnVtID0gMDsKCWZvciAoYXV0byBpdCA9IHMucmJlZ2luKCk7IGl0ICE9IHMucmVuZCgpOyArK2l0LCArK2kgKQoJewoJCWlmICgqaXQgIT0gJzAnKQoJCXsKCQkJbnVtICs9IDFVTEwgPDwgaTsKCQl9Cgl9CgoJcmV0dXJuIG51bTsKfQoKaW50IGdldFN0ZXBzVG8xKHVuc2lnbmVkIGxvbmcgbG9uZyBudW0pCnsKCWxvbmcgaW50IGNvdW50ID0gMDsKCXdoaWxlIChudW0gIT0gMSApCgl7CiAgICAgICAgaWYgKG51bSAlIDIgPT0gMCkKICAgICAgICAgICAgbnVtIC89IDI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBudW0gKz0gMTsKICAgICAgICBjb3VudCArPSAxOwoJfQoJcmV0dXJuIGNvdW50Owp9CgppbnQgbWFpbigpCnsKICAgIHN0cmluZyBzID0gIjExMTEwMTExMTAwMDAwMTExMDAwMDAxMTAwMDEwMTEwMTExMTAwMTAxMTEwMDEwMTAxMTExMTAwMDEiOwogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBkZWMgPSBzdHJpbmdUb051bWJlcihzKTsKICAgIGNvdXQgPDwgIk51bWJlcjogIiA8PCBkZWMgPDwgZW5kbDsKICAgIC8vICBkZWMgPSAyNzg2NzU2NzMxODYwMTQ3MDU7CgoJIGludCBjb3VudCA9IGdldFN0ZXBzVG8xKGRlYyk7CiAgICBjb3V0IDw8ICJTdGVwcyB0byAxOiAiIDw8IGNvdW50IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQoK