C++でサイコロをN回投げた後の最大ドット数
与えられたタスクは、M個の面を持つサイコロをN回投げた後に期待できるドットの最大数を計算することです。
サイコロの最初の面には1つのドットが含まれ、2番目の面には2つのドットが含まれます。同様に、M番目の面にはM個のドットが含まれています。
各顔の出現確率は1/Mになります。
例を使用して、私たちがしなければならないことを理解しましょう-
入力 − M =2、N =3
出力 − 1.875
説明 −サイコロには2つの側面があります={1、2}
サイコロを3回投げると、サンプルスペースは=M N になります。 =2 3
{(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2,) (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2,)} Maximum number in (1, 1, 1) = 1 Maximum number in (1, 1, 2) = 2 Maximum number in (1, 2, 1) = 2 Maximum number in (1, 2, 2) = 2 Maximum number in (2, 1, 1) = 2 Maximum number in (2, 1, 2) = 2 Maximum number in (2, 2, 1) = 2 Maximum number in (2, 2, 2) = 2 Probability of each case = 1/23 = 0.125 Therefore, expectation of maximum number = (1+2+2+2+2+2+2+2) * (0.125) = 1.875
入力 − M =2、N =2
出力 − 1.75
以下のプログラムで使用されるアプローチは次のとおりです
-
数が発生する可能性のある最大数は、式-i N を使用して、前の数を使用して見つけることができます。 –(i-1) N 。
たとえば、M=4およびN=2の場合、最大値=4のケースの総数は4 2 になります。 –(4-1) 2 =7.
したがって、最終的な答えは、1からMまでのすべての要素にこの式を適用することです-
(i *(i N –(i-1) N ))/ M N そしてそれらを合計します。
-
関数MaxExpect()で、double型の変数max =0を初期化して、合計を格納します。
-
次に、i=Mからi>0
までループします。 -
ループ内で上記の式を適用し、結果のすべての値を変数maxに追加し続けます。
例
#include <bits/stdc++.h> using namespace std; double MaxExpect(double M, double N){ double max = 0.0, i; for (i = M; i; i--) /*formula to find maximum number and sum of maximum numbers*/ max += (pow(i / M, N) - pow((i - 1) / M, N)) * i; return max; } int main(){ double M = 2, N = 3; cout << MaxExpect(M, N); return 0; }
出力
上記のコードを実行すると、次の出力が得られます-
1.875
-
C ++で指定された操作をq回適用した後、配列内の異なる数の数を見つけます
この問題では、すべてゼロで構成される配列のサイズである数値Nが与えられ、次のタイプのそれぞれのQクエリが与えられます- このクエリは、すべての要素をsからe(両方を含む)からvalに更新します。 私たちのタスクは、指定された操作をq回適用した後、配列内の異なる数の数を見つけることです。 問題を理解するために例を見てみましょう Input : N = 6, Q = 2 Q1 = update(1, 4, 3) Q2 = update(0, 2, 4) Output : 2 説明 初期配列、arr [] ={0、0、0、0、0、0} arr [] ={0、3、3、3、3、0}
-
最大ベンド数のC++パス長
二分木が与えられる問題を解決するため。次に、曲がりの数が最大のパスを見つける必要があります。つまり、パスの方向が左から右に、またはその逆に変化する場合、たとえば、曲がりが考慮されます 入力- 出力- 6 このアプローチでは、ツリーをトラバースして、以前の動きを追跡します。方向が変わった場合は、曲げカウントを更新するだけで、最大値が見つかります。 解決策を見つけるためのアプローチ このアプローチでは、すべてのパスをトラバースし、回答を更新するベンドの最大数を見つけます。 例 #include <bits/stdc++.h> using namespace std; s