C - 罰ゲーム 解説 by potato167


\(3\) 人の出る目の組み合わせは \(\prod(R_{i}-L_{i}+1)\) 通りありますが、これは全て等確率で出ます。

よって、 \(A\) 君が罰ゲームを受けることになる出た目の組み合わせの場合の数を求めて、それを \(\prod(R_{i}-L_{i}+1)\) で割れば良いです。

\(A\) 君が出した目が \(X\) のとき、\(A\) 君が罰ゲームを受ける条件は \(B\) 君と \(C\) 君どちらもが \(X\) より大きい値を出すことです。

例えば \(B\) 君が \(X\) より大きい出目を出す場合の数は、 \(R_{2}\leq X\) なら \(0\) 通り、そうでないなら \(R_{2}+1-\max(L_{2},X+1)\) 通りです。

\(C\) 君の場合も同様に求めることができます。

\(A\) 君の出す目は \(R_{1}-L_{1}+1\) 通りなで、 \(X\) の値を全て試せば良いです。

計算量は \(O(R_{1})\) です。

L=[0]*3
R=[0]*3
ans=0
all_p=1
for i in range(3):
  L[i],R[i]=map(int,input().split())
  all_p*=(R[i]-L[i]+1)
for X in range(L[0],R[0]+1):
  tmp=1
  for i in range(1,3):
    if R[i]<=X:
      tmp=0
    else:
      tmp*=R[i]+1-max(L[i],X+1)
  ans+=tmp
print(ans/all_p)