競技プログラミング用 知識集積所
ABC456B - 456
最終更新:
sport_programming
-
view
問題
必要知識
A問題レベルのものは省略
考え方
確率※の問題。
とはいえB問題なのでそれは上っ面だけで、「条件を満たす目の出方」「全ての目の出方」を求めて割り算すればいいだけ。
とはいえB問題なのでそれは上っ面だけで、「条件を満たす目の出方」「全ての目の出方」を求めて割り算すればいいだけ。
全ての目の出方は、6^3で216通りと簡単にわかる。
条件を満たす目の出方はその216通りを全探索※すればよい。
条件を満たす目の出方はその216通りを全探索※すればよい。
まず、それら216通りの候補を生成する。
これは各サイコロの目を長さ6のvectorに収め、それぞれを順に見ていくループを三重ループ※の形で書けばよい。
その中でそれぞれの候補が条件を満たすかチェックして、満たすならカウントを+1していけばよい。
これは各サイコロの目を長さ6のvectorに収め、それぞれを順に見ていくループを三重ループ※の形で書けばよい。
その中でそれぞれの候補が条件を満たすかチェックして、満たすならカウントを+1していけばよい。
条件を満たすか確認する方法は多数ある。
- if分岐を気合で6パターン書く
- 3つの出目をvectorに入れてソートし、それが{4,5,6}と一致するか見る
- 3つの出目をset※に入れ、それが{4,5,6}と一致するか見る
- 3つの数を掛けてみて、120になるか見る
などなど。
最も得意な方法を選べばよい。
最も得意な方法を選べばよい。
あとはそれを216.0で割ればよい。
うっかり216で割ってint型同士の割り算にしてしまわないように。
うっかり216で割ってint型同士の割り算にしてしまわないように。