結果
| 問題 |
No.425 ジャンケンの必勝法
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-09-22 23:41:29 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 76 ms / 2,000 ms |
| コード長 | 687 bytes |
| コンパイル時間 | 358 ms |
| コンパイル使用メモリ | 6,912 KB |
| 実行使用メモリ | 6,272 KB |
| 最終ジャッジ日時 | 2024-11-17 19:41:45 |
| 合計ジャッジ時間 | 1,592 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 18 |
ソースコード
#!/usr/bin/env python
#coding:utf8
def read():
p, q = map(int, raw_input().split())
p = 0.01 * p
q = 0.01 * q
return p, q
def rec(cur, p, q, ans):
if cur < 1e-11:
return
# 必勝法を使って勝つ
ans[0] += p * cur * 0.5
# 必勝法を使ってあいこになる
rec(p * cur * 0.5, max(0, p - q), q, ans)
# 必勝法を使わず勝つ
ans[0] += (1 - p) * cur / 3
# 必勝法を使わずあいこになる
rec((1 - p) * cur / 3, min(1, p + q), q, ans)
def work((p, q)):
ans = [0.0]
rec(1.0 / 3, p, q, ans)
print "%.10lf" % (ans[0] + 1.0 / 3)
if __name__ == "__main__":
work(read())