https://yukicoder.me/problems/no/567
解説放送
未定
解説
https://yukicoder.me/submissions/203601
dpで解く
dp[i][j] := サイコロをi回投げて6面のうちj面が既に出ている確率
サイコロを既にi回投げて、6面のうちj面が既に出ている場合
新しい面が出る確率は(6 - j) / 6であり、これでdp[i+1][j+1]を更新する
出たことある面が出る確率はj/6であり、これでdp[i + 1][j]を更新する
するとdp[N][6]が答え
int N; double dp[1010101][10]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; dp[0][0] = 1; rep(i, 0, N) rep(j, 0, 7) { int ok = 6 - j; int ng = j; dp[i + 1][j + 1] += dp[i][j] * ok / 6; dp[i + 1][j] += dp[i][j] * ng / 6; } printf("%.10f\n", dp[N][6]); }