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
-
C++での3番目の最大数
空でない整数の配列があるとします。この配列で3番目に大きい数を見つける必要があります。 3番目の最大数がない場合は、最大数を返します。課題は、線形時間計算量を使用してこれを解決する必要があることです。 したがって、入力が[5,3,8,9,1,4,6,2]の場合、出力は6になります。 これを解決するには、次の手順に従います- a、b、cをNULLで初期化します 初期化i:=0の場合、i
-
C++のチェス盤でのナイト確率
NxNチェス盤が1つあるとすると、騎士はr番目の行とc番目の列から開始し、正確にK回移動しようとします。ここでは、行と列に0のインデックスが付けられているため、左上の正方形は(0、0)であり、右下の正方形は(N-1、N-1)です。 騎士はセルから8つの異なるセルに移動できます。これは、この図に示されています- 騎士が移動するたびに、8つの可能な移動の1つをランダムに選択します。騎士は、正確にK移動するか、チェス盤から離れるまで移動を続けます。騎士が動きを止めた後もボードに留まる確率を見つける必要があります。 したがって、入力が3、2、0、0のような場合、出力は0.0625になります