結果

問題 No.76 回数の期待値で練習
ユーザー HIROPON87069639HIROPON87069639
提出日時 2016-02-20 23:01:42
言語 Python2
(2.7.18)
結果
MLE  
実行時間 -
コード長 1,185 bytes
コンパイル時間 867 ms
コンパイル使用メモリ 7,072 KB
実行使用メモリ 775,800 KB
最終ジャッジ日時 2023-10-23 18:44:05
合計ジャッジ時間 8,027 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 19 ms
6,696 KB
testcase_01 MLE -
権限があれば一括ダウンロードができます

ソースコード

diff #

# -*- coding: utf-8 -*-
import time

N = int(input())
tag = []
for i in range(0, N):
    tag.append(int(input()))
tagMAX = max(tag)
F = [-1, 0.08333333333333326, 0.16666666666666674, 0.25, 0.0833333333333326, 0.25, 0.1666666666666672]
P = [-1, 1, 0.9166666666666667, 0.75, 0.4999999999999998, 0.4166666666666672, 0.1666666666666672]
memo = [0, 1.0, 1.083333, 1.256944444, 1.535300920, 1.69159915, 2.05136397]
matG = [[0 for j in range(0, tagMAX+10)] for i in range(0, tagMAX)]
matG[0][0] = F[1]
matG[0][1] = F[2]
matG[0][2] = F[3]
matG[0][3] = F[4]
matG[0][4] = F[5]
matG[0][5] = F[6]
start = time.time()
for i in range(0, tagMAX-1):
    for j in range(0, tagMAX):
        for k in range(1, 7):
            matG[i+1][j+k] += F[k] * matG[i][j]
intG = [0 for j in range(0, tagMAX)]
#print (time.time() - start) * 1000, "ms"
for i in range(0, tagMAX):
    for j in range(0, tagMAX):
        intG[i] += (j+1) * matG[j][i]
for i in range(0, N):
    if 6 < tag[i]:
        ii = tag[i]-1
        out = 1 + intG[ii-1] * P[1] + intG[ii-2] * P[2] + intG[ii-3] * P[3] + intG[ii-4] * P[4]
        out += intG[ii-5] * P[5] + intG[ii-6] * P[6]
        print out
    else:
        print memo[tag[i]]
0