首页 文章资讯内容详情

在C ++中转换为Base -2

2026-06-04 1 花语

假设我们有一个数字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