Yuulis.log

Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 407 B - P(X or Y) | 緑コーダーが解くAtCoder

atcoder.jp

配点: 250 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 55 / NoviSteps: 6Q

問題概要

 1,2,3,4,5,6 の6種類の目が出るサイコロを2つ振ったときに、次の2つの条件の少なくとも一方を満たす確率を求めよ。

  • 2つの出目の合計が  X 以上である
  • 2つの出目の差の絶対値が  Y 以上である

ここで、どちらのサイコロについても6種類のどの目が出るかは同様に確からしく、それぞれのサイコロの出目は独立であるとする。

制約

  •  2\leq X\leq13
  •  0\leq Y\leq6
  • 入力は全て整数

考察

2つのサイコロの出目の組み合わせは全部で  36 通り存在するので、各々の組み合わせについて2つの条件のいずれかを満たすか否かを判定していけばよい。

出力時はdouble型にするのを忘れないこと。

実装例

#include <bits/stdc++.h>
using namespace std;

#define fix(x) fixed << setprecision(x)
#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

// ======================================== //

int main()
{
    int X, Y;
    cin >> X >> Y;

    int cnt = 0;
    rep(i, 1, 7) rep(j, 1, 7)
    {
        if (i + j >= X || abs(i - j) >= Y)
            cnt++;
    }

    cout << fix(10) << (double)cnt / 36 << endl;

    return 0;
}

atcoder.jp

実装時間: 5分

コメント

これが250点問題なのはちょっと意外。二重ループと浮動小数点要素が入っているから?