エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
\(K\)面ダイス(サイコロ)を\(N\)個投げた時に、合計がある値になる確率を求めたい 合計がある値になる場... \(K\)面ダイス(サイコロ)を\(N\)個投げた時に、合計がある値になる確率を求めたい 合計がある値になる場合の数を求めて\(K^N\)で割って確率にする方がやりやすそうなので、場合の数を求める方法を考える 総当り \(N\)個のダイスについてそれぞれ\(1\)から\(K\)までループするナイーブな総当りで和を求めていくと\(O(K^N)\)ぐらいの計算量が必要になってしまい、サイコロの数が増えると現実的な時間で終わらなくなってしまう 動的計画法 漸化式を立てて動的計画法で計算すると\(O(N^2K^2)\)ぐらいで計算できる 具体的には\(n\)個サイコロを使って合計が\(c\)になる場合の数を求めたいとき\(f_n(c) = \sum_{i=1}^K f_{n-1}(c-i)\)という漸化式が成り立つ K = 6 N = 100 dp = [[0] * N * K for i in