
配点: 250 点 / 実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 55 / NoviSteps: 6Q
問題概要
の6種類の目が出るサイコロを2つ振ったときに、次の2つの条件の少なくとも一方を満たす確率を求めよ。
- 2つの出目の合計が
以上である
- 2つの出目の差の絶対値が
以上である
ここで、どちらのサイコロについても6種類のどの目が出るかは同様に確からしく、それぞれのサイコロの出目は独立であるとする。
制約
- 入力は全て整数
考察
2つのサイコロの出目の組み合わせは全部で 通り存在するので、各々の組み合わせについて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; }
実装時間: 5分
コメント
これが250点問題なのはちょっと意外。二重ループと浮動小数点要素が入っているから?