# 1017. Convert to Base -2

Given a number `N`, return a string consisting of `"0"`s and `"1"`s that represents its value in base `-2` (negative two).

The returned string must have no leading zeroes, unless the string is `"0"`.

Example 1:

``````Input: 2
Output: "110"
Explantion: (-2) ^ 2 + (-2) ^ 1 = 2
``````

Example 2:

``````Input: 3
Output: "111" Explantion: (-2) ^ 2 + (-2) ^ 1 + (-2) ^ 0 = 3
``````

Example 3:

``````Input: 4
Output: "100" Explantion: (-2) ^ 2 = 4
``````

Note:

1. `0 <= N <= 10^9`

``````class Solution {
public:
string baseNeg2(int N) {
string res;
while (N != 0) {
res = to_string(N & 1) + res;
N = -(N >> 1);
}
return res == "" ? "0" : res;
}
};
``````

``````-1 = (-2) * 0 + (-1)
-1 = (-2) * 0 + (-2) + (-1) - (-2)
-1 = (-2) * (0 + 1) + (-1) - (-2)
``````

``````class Solution {
public:
string baseNeg2(int N) {
string res;
while (N != 0) {
int rem = N % (-2);
N /= -2;
if (rem < 0) {
rem += 2;
N += 1;
}
res = to_string(rem) + res;
}
return res == "" ? "0" : res;
}
};
``````

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1017

Encode Number

https://leetcode.com/problems/convert-to-base-2/

https://leetcode.com/problems/convert-to-base-2/discuss/265544/C%2B%2B-Geeks4Geeks

https://leetcode.com/problems/convert-to-base-2/discuss/265507/JavaC%2B%2BPython-2-lines-Exactly-Same-as-Base-2

LeetCode All in One 题目讲解汇总(持续更新中…)

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation