#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;
}