Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Convert to Base -2 trong C++


Cho số N, tìm chuỗi gồm '0' và '1' biểu diễn giá trị của N trong cơ số -2 (âm hai). Chuỗi không có số 0 dẫn đầu, trừ khi là "0". Ví dụ: N = 2, kết quả "110", vì (-2)² + (-2)¹ + (-2)⁰ = 4 - 2 + 1 = 3? Wait, 4-2+1=3, không phải 2. Thực tế: 110 base -2 = 1*4 + 1*(-2) + 0*1 = 2. Đúng.

Giải pháp:

  • ret := chuỗi rỗng

  • Nếu N = 0, trả về "0"

  • While N ≠ 0:
    rem := N % (-2)
    N := N / (-2)
    Nếu rem < 0: rem += 2, N++
    ret += rem (dạng chuỗi)

  • Đảo ngược ret và trả về

Ví dụ

#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;    } }; int main(){    Solution ob;    cout << (ob.baseNeg2(17)); }

Đầu vào

17

Đầu ra

10001