Problem:
Score : 300 points

Problem Statement

Given an integer N, find the base -2 representation of N.

Here, S is the base -2 representation of N when the following are all satisfied:

S is a string consisting of 0 and 1.

Unless S = 0, the initial character of S is 1.

Let S = S_k S_{k-1} ... S_0, then S_0 \times (-2)^0 + S_1 \times (-2)^1 + ... + S_k \times (-2)^k = N.

It can be proved that, for any integer M, the base -2 representation of M is uniquely determined.

Constraints

Every value in input is integer.

-10^9 \leq N \leq 10^9

Input

Input is given from Standard Input in the following format:

N

Output

Print the base -2 representation of N.

Sample Input 1

-9

Sample Output 1

1011

As (-2)^0 + (-2)^1 + (-2)^3 = 1 + (-2) + (-8) = -9, 1011 is the base -2 representation of -9.

Sample Input 2

123456789

Sample Output 2

11000101011001101110100010101

Sample Input 3

0

Sample Output 3

0

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)


#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>

#ifndef ULLONG
typedef unsigned long long ULLONG;
#endif
#ifndef LLONG
typedef long long LLONG;
#endif
static const ULLONG UL_HUGE_DIVIDER = 1000000007LLU;
static const LLONG LL_HUGE_DIVIDER = 1000000007LL;

//static void ABC111D_RobotArms();
static void ABC105C_Base_2Number();

#if 1
int main()
{
	//ABC111D_RobotArms();
	ABC105C_Base_2Number();

	fflush(stdout);
	return 0;
}
#endif


static void ABC105C_Base_2Number()
{
	int N;
	scanf(" %d", &N);

	int i = 0;
	LLONG powVal[33] = { 0 };	//	2^32 = 1073741824
	powVal[0] = 1;
	for(i = 1; i <= 32; i++) {
		powVal[i] = powVal[i - 1] * -2;
	}

	std::string ans = "";
	for (int i = 0; i < 32; i++) {
		if (N == 0) {
			break;
		}
		else if (N % powVal[i + 1]) {
			ans.insert(ans.begin(), '1');
			N -= powVal[i];
		}
		else {
			ans.insert(ans.begin(), '0');
		}
	}

	printf("%s\n", ans.c_str());
}