結果
| 問題 |
No.162 8020運動
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-06-02 03:20:02 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 30 ms / 5,000 ms |
| コード長 | 1,385 bytes |
| コンパイル時間 | 347 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-07-06 13:19:36 |
| 合計ジャッジ時間 | 1,982 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 |
ソースコード
def read_data():
age = int(input())
p0, p1, p2 = map(int, input().split())
return age, p0/100.0, p1/100.0, p2/100.0
def solve(age, p0, p1, p2, target=80):
N = 16
q0 = [0] * N
q1 = [0, 1] + [0] * (N-2)
q2 = [0] * (N-2) + [1, 0]
q3 = [0, 0] + [1] * (N-4) + [0, 0]
r0, r1, r2 = 1 - p0, 1 - p1, 1 - p2
for y in range(target - age):
qr0 = [q0i * r0 for q0i in q0]
qr1 = [q1i * r1 for q1i in q1]
qr2 = [q2i * r1 for q2i in q2]
qr3 = [q3i * r2 for q3i in q3]
nq0 = qr0[:]
nq1 = [0] * N
nq2 = [0] * N
nq3 = qr3[:]
for i in range(1, N-1):
if q3[i-1] + q1[i-1]:
s1 = (qr3[i-1] + qr1[i-1])/(q3[i-1] + q1[i-1])
else:
s1 = 0
if q3[i+1] + q2[i+1]:
s2 = (qr3[i+1] + qr2[i+1])/(q3[i+1] + q2[i+1])
else:
s2 = 0
t2 = 1 - s2
t1 = 1 - s1
nq0[i] += qr1[i] * t2 + qr2[i] * t1 + qr3[i] * t2 * t1
nq1[i] = (qr1[i] + qr3[i] * t1) * s2
nq2[i] = (qr2[i] + qr3[i] * t2) * s1
nq3[i] *= s1 * s2
q0 = nq0
q1 = nq1
q2 = nq2
q3 = nq3
return 2 * (sum(q0) + sum(q1) + sum(q2) + sum(q3))
if __name__ == '__main__':
age, p0, p1, p2 = read_data()
print(solve(age, p0, p1, p2))