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

C++でNからMに到達するための最小ステップ数を見つけます


2つの整数NとMがあるとします。与えられた操作を実行して、NからMに到達するための最小ステップ数を見つける必要があります-

  • 数値xに2を掛けると、xは2*xになります
  • 数値xから1を引くと、数値はx –1になります

N=4およびM=6の場合、出力は2になります。したがって、Nに対して操作番号2を実行すると、Nは3になり、更新されたNの値に対して操作番号1を実行すると、2 * 3=6になります。したがって、最小ステップ数は2になります。

この問題を解決するために、次のルールに従います-

  • Mから始まる数Nを取るように、問題を元に戻すことができるので、新しい2つの操作が行われます

    • 偶数の場合は2で割ります
    • 番号に1を追加
  • これで、操作の最小数は
      になります。
    • N> Mの場合、それらの差を返します。したがって、ステップ数は、Nに等しくなるまでMに1を加算します。
    • それ以外の場合、N

#include<iostream>
using namespace std;
int countMinimumSteps(int n, int m) {
   int count = 0;
   while(m > n) {
      if(m % 2 == 1) {
         m++;
         count++;
      }
      m /= 2;
      count++;
   }
   return count + n - m;
}
int main() {
   int n = 4, m = 6;
   cout << "Minimum number of operations required: " << countMinimumSteps(n, m);
}

出力

Minimum number of operations required: 2

  1. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr

  2. C++で対戦相手を捕まえるために必要な最小ステップ数を見つけるためのプログラム

    [u、v]の形式のツリーエッジのリストがあると仮定します。これは、uとvの間に無向エッジがあることを示します。また、xとyの2つの値があります。ノードxにいて、対戦相手がノードyにいる場合。最初のラウンドでは移動し、次のラウンドでは対戦相手が移動します。対戦相手は、ラウンドで移動しないことを選択できます。対戦相手を捕まえるのに必要な最小ラウンド数を見つける必要があります。 したがって、入力がedges =[[0、1]、[0、2]、[1、3]、[1、4]]、x =0、y =3のような場合、出力は3になります。最初と同じように、ノード0から1に移動します。その後、対戦相手は現在のノード3に留まり