結果

問題 No.1688 Veterinarian
ユーザー SPD_9X2
提出日時 2021-09-24 22:26:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 624 ms / 3,000 ms
コード長 1,184 bytes
コンパイル時間 715 ms
コンパイル使用メモリ 82,828 KB
実行使用メモリ 199,004 KB
最終ジャッジ日時 2024-07-05 10:54:33
合計ジャッジ時間 3,446 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

"""

50**4

"""


from sys import stdin
import sys

A,B,C,N = map(int,stdin.readline().split())

dp = [[[[0] * (C+1) for i in range(B+1)] for j in range(A+1)] for k in range(N+1)]

dp[0][A][B][C] = 1

for i in range(N):

    for a in range(A+1):
        for b in range(B+1):
            for c in range(C+1):

                s = (a+b+c)
                ndp = dp[i][a][b][c]

                if s * (s-1) == 0:
                    rem = 1
                else:
                    rem = 1 - ( a*(a-1) + b*(b-1) + c*(c-1) ) / (s*(s-1))

                dp[i+1][a][b][c] += ndp * rem

                if rem == 1:
                    continue

                if a != 0:
                    dp[i+1][a-1][b][c] += ndp * a * (a-1) / (s*(s-1))
                if b != 0:
                    dp[i+1][a][b-1][c] += ndp * b * (b-1) / (s*(s-1))
                if c != 0:
                    dp[i+1][a][b][c-1] += ndp * c * (c-1) / (s*(s-1))

aa = 0
bb = 0
cc = 0
for a in range(A+1):
    for b in range(B+1):
        for c in range(C+1):
            aa += dp[N][a][b][c] * (A-a)
            bb += dp[N][a][b][c] * (B-b)
            cc += dp[N][a][b][c] * (C-c)

print (aa,bb,cc)

#print (ans)
0