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

C++の3番目のサイコロ投げでより多くの価値を得る確率


3人のプレーヤーA、B、Cがサイコロを投げる場合、Cがサイコロを投げる確率を見つける必要があり、Cの得点数はAとBの両方よりも高くなります。

より多くの価値を得る確率を確認するには、3回目のサイコロ投げの価値が前の2つよりも高いことに注意する必要があります。

Aがサイコロを投げてスコア2、Bがサイコロを投げてスコア3のように、Cがより高い値になる確率は3/6 =1/2です。これは、AとBよりも高くなる可能性のある値が3つしかないためです。 4、5、6なので、減らすと確率は1/2になります。

したがって、それによって得られる結果はさらに減らす必要があります。

入力

A = 3, B = 5

出力

1/6

説明 − 3と5の両方よりも大きい唯一の値は6であるため、1/6は確率です。

入力

A = 2, B = 4

出力

1/3

説明 − 2と4の両方よりも高い値は5と6であり、確率は2/6であり、1/3に減らすことができます。

問題を解決するために以下で使用するアプローチは次のとおりです

  • AとBの値の中で最大値を見つけます

  • 6からAとBの最大値を引き、6でそのgcdを計算します

  • 結果を返します。

アルゴリズム

Start
Step 1→ probability of getting more value in third dice
   void probab_third(int a, int b)
      declare int c = 6 - max(a, b)
      declare int GCD = __gcd(c, 6)
      Print GCD
Step 2→ In main()
   Declare int a = 2, b = 2
   Call probab_third(a, b)
Stop

#include <bits/stdc++.h>
using namespace std;
//probability of getting more value in third dice
void probab_third(int a, int b){
   int c = 6 - max(a, b);
   int GCD = __gcd(c, 6);
   cout<<"probability of getting more value in third dice : " <<c / GCD << "/" << 6 / GCD;
}
int main(){
   int a = 2, b = 2;
   probab_third(a, b);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

probability of getting more value in third dice : 2/3

  1. C++での3番目の最大数

    空でない整数の配列があるとします。この配列で3番目に大きい数を見つける必要があります。 3番目の最大数がない場合は、最大数を返します。課題は、線形時間計算量を使用してこれを解決する必要があることです。 したがって、入力が[5,3,8,9,1,4,6,2]の場合、出力は6になります。 これを解決するには、次の手順に従います- a、b、cをNULLで初期化します 初期化i:=0の場合、i

  2. C++のチェス盤でのナイト確率

    NxNチェス盤が1つあるとすると、騎士はr番目の行とc番目の列から開始し、正確にK回移動しようとします。ここでは、行と列に0のインデックスが付けられているため、左上の正方形は(0、0)であり、右下の正方形は(N-1、N-1)です。 騎士はセルから8つの異なるセルに移動できます。これは、この図に示されています- 騎士が移動するたびに、8つの可能な移動の1つをランダムに選択します。騎士は、正確にK移動するか、チェス盤から離れるまで移動を続けます。騎士が動きを止めた後もボードに留まる確率を見つける必要があります。 したがって、入力が3、2、0、0のような場合、出力は0.0625になります