C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でBase-2に変換する


数値Nがあるとすると、基数-2(負の2)の値を表す「0」と「1」で構成される文字列を見つける必要があります。文字列が正確に「0」でない限り、返される文字列には先行ゼロが含まれていてはなりません。したがって、入力が2の場合、出力は(-2)^ 2 +(-2)^ 1 +(-2)^ 0=2のように「110」になります。

これを解決するには、次の手順に従います-

  • ret:=空の文字列

  • N =0の場合、「0」を返します

  • Nが0以外の場合

    • rem:=N mod(– 2)

    • N:=N /(-2)

    • rem <0かつrem:=rem + 2の場合、Nを1増やします

    • ret:=ret + rem as string

  • 文字列を逆にする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

  1. C++でゲームVをジャンプする

    arrと呼ばれる整数の配列と整数dがあるとします。 1つのステップで、インデックスiから-にジャンプできます。 i + xここで、i +x

  2. C++で数値を負数進表現に変換します

    このチュートリアルでは、数値を負数進表現に変換するプログラムについて説明します。 このために、数値とそれに対応する負数進法が提供されます。私たちの仕事は、与えられた数をその負数進に相当するものに変換することです。負数進値には、-2から-10までの値のみを許可しています。 例 #include <bits/stdc++.h> using namespace std; //converting integer into string string convert_str(int n){    string str;    stringstrea