問題概要
問題文はこちらを参照してください。
解法
まずは、1~6の積が$D$の倍数にならないといけないので、$D$を素因数分解したときに、2,3,5以外の要素が含まれていると確率は0になるということがわかります。したがって、$D$の素因数分解が必要になります。素因数分解は単純に2,3,5それぞれで何回割り切れるのかを計算して、$D=2^I\cdot 3^J\cdot 5^K$と表されるとします。
このように考えると、サイコロを$N$回振った時に出た目の積が、それぞれ$2^I\cdot 3^J\cdot 5^K$よりも多い要素でできている確率と考えられます。$n$回目の試行で$2^i\cdot 3^j\cdot 5^k$だった場合、例えば$n+1$回目の試行で2の目が出る$\frac{1}{6}$の確率分、$2^{i+1}\cdot 3^j\cdot 5^k$になる確率が増えます。このようにすべての目が出る確率を計算していきます。
$dp[n][i][j][k]$:サイコロを$n$回振った時、出た目の積が$2^i\cdot 3^j\cdot 5^k$と表される確率
$(0\le n \le N,\ 0\le i \le I,\ 0\le j \le J,\ 0\le k \le K)$
初期値:$dp[0][0][0][0]=1$
求める解:$dp[n][I][J][K]$
ただし、上記漸化式左辺の$i,j,k$の部分は、$i+2=\min\{i+2,I\}$などと考え、$2^{I+2}$などになる確率は$dp[n][I][j][k]$に加えるようにして、$i=I$の時は$2^i$ちょうどではなく、$2^I$以上と表される確率とします。
考察
確率の問題は配るDPで足していくといいことが多い気がします。特に今回は$2^I$以上のものをまとめたいので、そちらのほうがわかりやすいと思います。
コメント
コメント一覧 (2)
「ただし、上記漸化式左辺のi,j,kの部分は、i+2=max{i+2,I}などと考え、、、、、、」
の部分は max ⇒ min でしょうか?