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

C++で同じ数のジャンプの後に2人が会ったことがあるかどうかを調べます


この問題では、レースでそれぞれが取った開始点とジャンプを示す4つの整数が与えられます。私たちの仕事は、同じ回数のジャンプの後に2人が出会ったことがあるかどうかを見つけることです。

問題の説明: ここでは、ポイントp1とp2からジャンプj1とj2を取得する2人が、パスのあるポイントにいるかどうかを確認する必要があります。

問題を理解するために例を見てみましょう

入力: p1 =5、p2 =9、j1 =4、j2 =2

出力: はい

説明:

最初のジャンプの後、p1 =9、p2 =11
2回目のジャンプ後、p1 =13、p2 =13

ソリューションアプローチ:

ある時点で会うために、両方の人々は異なる距離をジャンプする必要があります。人との出会いが可能かどうかを確認するために満たすべき条件は次のとおりです。

p1> p2の場合、s1はs2よりも小さい必要があります。

そして((p2-p1)%(s1-s2))==0

そうすれば、会議は可能になります。そうでなければ不可能です。

ソリューションの動作を説明するプログラム

#include<iostream>
using namespace std;

bool WillMeet(int p1, int j1, int p2, int j2){

   return ( (j1 > j2 && ( ((p2 - p1) % (j1 - j2)) == 0)) || (j2 > j1 && ( ((p1 - p2) % (j2 - j1)) == 0)) );
}

int main() {
   
   int p1 = 5, j1 = 4, p2 = 9, j2 = 2;
   if(WillMeet(p1, j1, p2, j2))
      cout<<"Both will meet at some point";
   else
      cout<<"Both will not meet at any point";
   
   return 0;
}

出力

Both will meet at some point

  1. 数値が2の累乗であるかどうかを調べるC++プログラム?

    与えられた数が2の累乗であるかどうかを確認します。最初に、どの数が2の累乗であるかを確認します。このコードは、数値が奇数かどうかをチェックし、0または奇数になるまで同時に除算します。 0になると2の累乗になり、そうでない場合はそうではありません。 より良い選択は、番号のログを取ることです。整数の場合、nは2の累乗です。それ以外の場合はそうではありません。 2の累乗である数: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ... 22 = 4 25 = 32 210 = 1024 Input: 8 Output: Number is pow

  2. Pythonの2つの異なる都市に同じ数の人々を送るための最小コストを見つけるためのプログラム

    コストというリストがあるとします。 cost [i]に[c1、c2]がある場合、人iの場合、都市0に到達するのにc1の金額がかかり、都市1に到達するのにc2の金額がかかります。必要な最小コストを見つける必要があります。 したがって、入力がcosts =[[2、6]、[10、3]、[4、9]、[5、8]]のようである場合、人0と2は次のようになるため、出力は17になります。都市0と人1および3から都市1まで、したがって都市0の場合のコストは2 + 4 =6であり、都市1の場合のコストは8 + 3 =11であり、合計は17です。 これを解決するには、次の手順に従います- s:=0 a: