在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