結果

問題 No.1688 Veterinarian
ユーザー rlangevinrlangevin
提出日時 2023-02-14 22:56:18
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 520 ms / 3,000 ms
コード長 1,253 bytes
コンパイル時間 156 ms
コンパイル使用メモリ 82,192 KB
実行使用メモリ 183,340 KB
最終ジャッジ日時 2024-07-17 10:41:43
合計ジャッジ時間 3,854 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 59 ms
72,160 KB
testcase_01 AC 158 ms
183,340 KB
testcase_02 AC 95 ms
105,572 KB
testcase_03 AC 54 ms
72,064 KB
testcase_04 AC 54 ms
72,896 KB
testcase_05 AC 60 ms
76,356 KB
testcase_06 AC 182 ms
159,108 KB
testcase_07 AC 103 ms
79,724 KB
testcase_08 AC 520 ms
114,304 KB
testcase_09 AC 501 ms
114,284 KB
testcase_10 AC 205 ms
132,064 KB
testcase_11 AC 192 ms
111,836 KB
testcase_12 AC 122 ms
81,780 KB
testcase_13 AC 170 ms
133,244 KB
testcase_14 AC 133 ms
88,336 KB
testcase_15 AC 224 ms
164,900 KB
testcase_16 AC 126 ms
93,528 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def f(a, b, c):
    return a * 52 * 52 + b * 52 + c

A, B, C, N = map(int, input().split())
pre = [0] * (52 * 52 * 52)
pre[0] = 1
for i in range(N):
    dp = [0] * (52 * 52 * 52)
    for a in range(51):
        if A - a < 0:
            continue
        for b in range(51):
            if B - b < 0:
                continue
            for c in range(51):
                if C - c < 0:
                    continue
                all = A - a + B - b + C - c
                if all <= 1:
                    continue
                pa = (A - a) * (A - a - 1) / (all * (all - 1))
                pb = (B - b) * (B - b - 1) / (all * (all - 1))
                pc = (C - c) * (C - c - 1) / (all * (all - 1))
                dp[f(a + 1,b,c)] += pre[f(a,b,c)] * pa
                dp[f(a,b + 1,c)] += pre[f(a,b,c)] * pb
                dp[f(a,b,c + 1)] += pre[f(a,b,c)] * pc
                dp[f(a,b,c)] += pre[f(a,b,c)] * (1 - pa - pb - pc)
                
    dp, pre = pre, dp
    
                    
ansA, ansB, ansC = 0, 0, 0
for a in range(51):
    for b in range(51):
        for c in range(51):
            ansA += pre[f(a,b,c)] * a
            ansB += pre[f(a,b,c)] * b
            ansC += pre[f(a,b,c)] * c
            
print(ansA, ansB, ansC)
0