#include <iostream>
#include <string>
using namespace std;
template <typename T>
T binToDec(const string & bin)
{
T result = 0;
T powerOf2 = T(1);
for (auto i = bin.rbegin(); i != bin.rend(); ++i, powerOf2 <<= 1)
result += (*i - '0') * powerOf2;
return result;
}
int main()
{
string num[] = {"0", "1", "10", "11", "100", "101", "110", "111", "1000"};
for (auto & n : num)
cout << binToDec<unsigned int>(n) << endl;
cout << binToDec<unsigned long long>("1111111111111111111111111111111111111111111111111111111111111111") << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgYmluVG9EZWMoY29uc3Qgc3RyaW5nICYgYmluKQp7CglUIHJlc3VsdCA9IDA7CglUIHBvd2VyT2YyID0gVCgxKTsKCWZvciAoYXV0byBpID0gYmluLnJiZWdpbigpOyBpICE9IGJpbi5yZW5kKCk7ICsraSwgcG93ZXJPZjIgPDw9IDEpCgkJcmVzdWx0ICs9ICgqaSAtICcwJykgKiBwb3dlck9mMjsKCXJldHVybiByZXN1bHQ7Cgp9CgppbnQgbWFpbigpCnsKCXN0cmluZyBudW1bXSA9IHsiMCIsICIxIiwgIjEwIiwgIjExIiwgIjEwMCIsICIxMDEiLCAiMTEwIiwgIjExMSIsICIxMDAwIn07CgoJZm9yIChhdXRvICYgbiA6IG51bSkKCQljb3V0IDw8IGJpblRvRGVjPHVuc2lnbmVkIGludD4obikgPDwgZW5kbDsKCgljb3V0IDw8IGJpblRvRGVjPHVuc2lnbmVkIGxvbmcgbG9uZz4oIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEiKSA8PCBlbmRsOwp9