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

nを表すために必要な2進数の最小数をカウントするC++プログラム


数nがあるとします。数値が正の整数であり、10進数表記のすべての桁が0または1の場合、数値は2進化10進数です。たとえば、1001(1000と1)は2進化10進数ですが、1021はそうではありません。数値nから、nをいくつかの(必ずしも明確ではない)2進数の小数の合計として表す必要があります。次に、それに必要な2進数の最小数を計算します。

したがって、入力がn =121の場合、出力は2になります。これは、110+11または111+10として表すことができるためです。

ステップ

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

ans := -1
while n > 0, do:
   ans := maximum of ans and (n mod 10)
   n := n / 10
return ans

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int ans = -1;
   while (n > 0) {
      ans = max(ans, n % 10);
      n /= 10;
   }
   return ans;
}
int main() {
   int n = 121;
   cout << solve(n) << endl;
}

入力

121

出力

2

  1. C++でバイナリ行列をゼロ行列に変換する演算の数をカウントするプログラム

    バイナリ行列があるとします。ここで、1つのセルを取得し、そのセルとそのすべての隣接セル(上、下、左、右)を反転する操作について考えてみます。行列に0のみが含まれるように、必要な操作の最小数を見つける必要があります。解決策がない場合は、-1を返します。 したがって、入力が次のような場合 0 0 1 0 その場合、出力は3になります。 これを解決するには、次の手順に従います- サイズの配列ディレクトリを定義します:4 x 2:={{1、0}、{0、1}、{-1、0}、{0、-1}} const int inf =10 ^ 6 関数getP

  2. 8進数を2進数に変換するC++プログラム

    コンピューターシステムでは、2進数は2進数で表され、8進数は8進数で表されます。 2進数は基数2で、8進数は基数8です。 2進数とそれに対応する8進数の例は次のとおりです- 2進数 8進数 01101 15 00101 5 10110 26 01010 12 8進数を2進数に変換するプログラムは次のとおりです- 例 #include <iostream> #include <cmath> using namespace std; int OctalToBinary(int octalNum) {