結果
問題 | No.76 回数の期待値で練習 |
ユーザー | maine_honzuki |
提出日時 | 2020-05-11 18:04:03 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 27 ms / 5,000 ms |
コード長 | 766 bytes |
コンパイル時間 | 1,553 ms |
コンパイル使用メモリ | 166,868 KB |
実行使用メモリ | 19,328 KB |
最終ジャッジ日時 | 2024-07-18 15:39:26 |
合計ジャッジ時間 | 2,054 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 27 ms
19,200 KB |
testcase_01 | AC | 27 ms
19,328 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; double dp[1000020] = {}, prob[1000020] = {}; int main() { const double dice[] = {0, 1.0 / 12, 1.0 / 6, 1.0 / 4, 1.0 / 12, 1.0 / 4, 1.0 / 6}; prob[0] = 1; for (int i = 0; i < 1000005; i++) { for (int j = 1; j <= 6; j++) { dp[i + j] += (dp[i] + prob[i]) * dice[j]; prob[i + j] += prob[i] * dice[j]; } } int T; cin >> T; while (T--) { int N; cin >> N; double ans = 1; for (int i = max(0, N - 6); i < N; i++) { for (int j = 1; j <= 6; j++) { if (i + j >= N) ans += dp[i] * dice[j]; } } cout << fixed << setprecision(10) << ans << endl; } }