読者です 読者をやめる 読者になる 読者になる

SRM 626 Div2 Medium FixedDiceGameDiv2

問題

SRM 626 - TopCoder Wiki

Aliceは1からaまでの目があるダイスを,Bobは1からbまでの目があるダイスを持っている. 大きい方の目が出たほうが勝ちとする. Aliceが勝ったことがわかった時,Aliceが出した目の期待値を求める問題.

解答

  • Aliceがxという目を出した時に勝つ場合の数をそれぞれ求める
  • そうするとAliceが勝つ場合の全ての数が分かるのでxを出して勝つ確率が求めることが出来る.
  • xに確率を書けて,期待値を出す.
class FixedDiceGameDiv2
{
public:
  double getExpectation(int a, int b)
    {
      int num = 0;
      int sum = 0;
      for (int i = 1; i <= a; i++) {
        for (int j = 1; j <= b && j < i; j++) {
          num++;
          sum += i;
        }
      }
      return 1.0*sum/num;
    }
};