結果
| 問題 |
No.301 サイコロで確率問題 (1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-11-15 04:36:43 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 1,000 ms |
| コード長 | 682 bytes |
| コンパイル時間 | 149 ms |
| コンパイル使用メモリ | 7,040 KB |
| 実行使用メモリ | 6,656 KB |
| 最終ジャッジ日時 | 2024-09-13 16:49:29 |
| 合計ジャッジ時間 | 685 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 |
ソースコード
# -*- coding: utf-8 -*-
# based http://garnacha.techblog.jp/archives/39531672.html
SHULESHOLD = 100
N = SHULESHOLD
A = [0] * (N + 1)
B = [0] * (N + 1)
inv = 1.0 / 6
for i in range(N - 1, -1, -1):
for j in range(1, 7):
if i + j > N:
A[i] += inv
B[i] += inv
else:
A[i] += (A[i + j] + 1) * inv
B[i] += B[i + j] * inv
T = int(raw_input())
for _ in range(T):
N = int(raw_input())
if N < SHULESHOLD:
# 98回くらいで誤差が範囲内になった。
ans = A[SHULESHOLD - N] / (1 - B[SHULESHOLD - N])
else:
ans = N + (A[0] / (1 - B[0]) - SHULESHOLD)
print "%.15f" % ans