#include <iostream>
#include <string>
#include <sstream>
#include <cmath>
const std::string NumberToString(size_t num)
{
std::stringstream ss;
ss << num;
std::string result;
ss >> result;
return result;
}
size_t StringToNumber(const std::string &s_num)
{
std::stringstream ss;
ss << s_num;
size_t result;
ss >> result;
return result;
}
size_t BinaryToDecimal(const std::string &s_num)
{
size_t result = 0;
size_t num_size = s_num.size();
for(auto iter = s_num.begin(); iter != s_num.end(); ++iter)
{
if(*iter == '1')
{
result += pow(num_size - (iter - s_num.begin()) - 1, 2);
}
}
return result;
}
size_t Fun(size_t num)
{
if(num > 1000000)
return -1;
std::string s_num = NumberToString(num);
size_t num_size = s_num.size();
std::string result;
for(auto iter = s_num.begin(); iter != s_num.end(); ++iter)
{
size_t n1 = num_size - (iter - s_num.begin());
size_t n2 = StringToNumber({*iter});
if(n1 % 2 == 0 ? (n2 % 2 == 0) : (n2 % 2 != 0))
{
result += "1";
}
else
{
result += "0";
}
}
return BinaryToDecimal(result);
}
int main()
{
size_t num;
std::cin >> num;
std::cout << Fun(num) << std::endl;
return 0;
}
|