結果
問題 | No.425 ジャンケンの必勝法 |
ユーザー |
![]() |
提出日時 | 2025-06-12 20:28:16 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,102 bytes |
コンパイル時間 | 214 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 62,208 KB |
最終ジャッジ日時 | 2025-06-12 20:28:29 |
合計ジャッジ時間 | 2,159 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 4 |
other | WA * 18 |
ソースコード
p0, q = map(int, input().split()) # Initialize f with 0.5 for all p f = [0.5] * 101 threshold = 1e-9 while True: new_f = [0.0] * 101 max_change = 0.0 for p in range(101): p_used = max(0, p - q) p_not_used = min(100, p + q) # Calculate w and d w = (1 - p / 100) / 3 d = (2 + p / 100) / 6 # Probability terms prob_method_used = p / 100 prob_method_not_used = (100 - p) / 100 # Compute the term involving f[p_used] and f[p_not_used] term = d * (prob_method_used * f[p_used] + prob_method_not_used * f[p_not_used]) new_f_p = w + term new_f[p] = new_f_p # Update maximum change change = abs(new_f_p - f[p]) if change > max_change: max_change = change # Check for convergence if max_change < threshold: break # Update f for next iteration f = new_f # Calculate the total probability p_total = 1/3 + (1/3) * f[p0] # Output with sufficient precision print("{0:.10f}".format(p_total))