P13476 [GCJ 2008 APAC SemiFinal] Millionaire

题目描述

你受邀参加了著名电视节目“你想成为百万富翁吗?”。当然你想! 游戏规则很简单: - 在游戏开始前,主持人会转动幸运轮,决定每次下注获胜的概率 $P$。 - 你起始拥有 $X$ 美元。 - 游戏共进行 $M$ 轮下注。在每一轮中,你可以下注当前所拥有金额的任意部分,包括全部或不下注。下注金额可以不是整数。 - 如果你赢得本轮下注,你的总金额会增加你下注的金额;如果你输掉本轮下注,你的总金额会减少你下注的金额。 - 所有下注结束后,如果你累计金额达到 $1000000$ 或以上,你可以保留你的奖金(这时金额向下取整为整数美元);否则你将一无所获。 给定 $M$、$P$ 和 $X$,请你计算在最优策略下(即最大化成为百万富翁概率的策略),你成为百万富翁的概率。

输入格式

输入的第一行是测试用例数 $N$。 接下来的 $N$ 行,每行格式为 “$M$ $P$ $X$”,其中: - $M$ 为整数,表示下注轮数。 - $P$ 为实数,表示每轮下注获胜的概率。 - $X$ 为整数,表示初始金额(美元)。

输出格式

对于每个测试用例,输出一行,格式为 “Case #$X$: $Y$”,其中: - $X$ 为测试用例编号,从 $1$ 开始。 - $Y$ 为成为百万富翁的概率,范围在 $0$ 到 $1$ 之间。 当你的答案的绝对误差或相对误差不超过 $10^{-6}$ 时,将被视为正确。

说明/提示

**样例解释** 在第一个样例中,唯一能达到 $1000000$ 的方式是在唯一一轮中押上全部金额。 在第二个样例中,你可以通过合理下注,即使输掉一轮也有机会成为百万富翁。以下是一种下注方式: - 第一轮你有 \$600000,下注 \$150000。 - 如果第一轮输了,你剩下 \$450000,下注 \$100000。 - 如果第一轮输了、第二轮赢了,你有 \$550000,下注 \$450000。 - 如果第一轮赢了,你有 \$750000,下注 \$250000。 - 如果第一轮赢了、第二轮输了,你有 \$500000,下注 \$500000。 **数据范围** - $1 \leq N \leq 100$ - $0 \leq P \leq 1.0$,小数点后最多 6 位 - $1 \leq X \leq 1000000$ **小数据集(13 分,测试点 1 - 可见)** - $1 \leq M \leq 5$ **大数据集(16 分,测试点 2 - 隐藏)** - $1 \leq M \leq 15$ 由 ChatGPT 4.1 翻译