結果

問題 No.76 回数の期待値で練習
コンテスト
ユーザー HIROPON87069639
提出日時 2016-02-20 23:01:42
言語 PyPy2
(7.3.15)
結果
MLE  
実行時間 -
コード長 1,185 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 151 ms
コンパイル使用メモリ 76,540 KB
最終ジャッジ日時 2025-12-03 19:26:21
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 1 MLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

# -*- 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