結果
| 問題 | No.76 回数の期待値で練習 |
| コンテスト | |
| ユーザー |
HIROPON87069639
|
| 提出日時 | 2016-02-20 23:01:42 |
| 言語 | PyPy2 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,185 bytes |
| 記録 | |
| コンパイル時間 | 151 ms |
| コンパイル使用メモリ | 76,540 KB |
| 最終ジャッジ日時 | 2025-12-03 19:26:21 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 MLE * 1 |
ソースコード
# -*- 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]]
HIROPON87069639