在C ++中转换为Base -2
假设我们有一个数字N,我们必须找到一个由“0”和“1”组成的字符串,该字符串表示其值以2为底(负2)。返回的字符串不应包含前导零,除非该字符串正好是“0”。因此,如果输入类似于2,则输出将为“110”,因为(-2)^2+(-2)^1+(-2)^0=2。
为了解决这个问题,我们将遵循以下步骤-
ret:=一个空字符串
如果N=0,则返回“0”
当N不为0时
雷姆:=Nmod(–2)
N:=N/(-2)
如果rem<0且rem:=rem+2并将N增加1
ret:=ret+rem作为字符串
反转字符串ret
返回ret。
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string baseNeg2(int N) {
string ret = "";
if(N == 0) return "0";
while(N){
int rem = N % (-2);
N /= -2;
if(rem < 0) rem += 2, N++;
ret += to_string(rem);
}
reverse(ret.begin(), ret.end());
return ret;
}
};
main(){
Solution ob;
cout << (ob.baseNeg2(17));
}输入项
17
输出结果
10001