简介
Cookie Clicker 是 Orteil 开发的一款 Javascript 游戏,玩家通过点击一个巨大的饼干图片来获取饼干。玩家可以消耗饼干购买建筑,这些建筑能帮助玩家获得更多的饼干。与本题类似,该游戏非常注重饼干的积累。本题的思路与之相似,但并不要求你玩过 Cookie Clicker。请不要现在去玩它:你可能很久都回不来了。
题目描述
在本题中,你初始拥有 0 个饼干。通过点击巨大的饼干,你每秒可以获得 2 个饼干。任何时候,只要你拥有至少 C 个饼干,就可以购买一个饼干农场。每购买一个饼干农场,需要消耗 C 个饼干,并使你每秒额外获得 F 个饼干。
一旦你拥有了 X 个未用于购买农场的饼干,你就赢了!请计算在采取最优策略的情况下,你需要多长时间才能获胜。
样例
假设 C=500.0,F=4.0,X=2000.0。以下是采取最优策略的过程:
- 你初始拥有 0 个饼干,但每秒产生 2 个饼干。
- 经过 250 秒后,你将拥有 C=500 个饼干,可以购买一个每秒产生 F=4 个饼干的农场。
- 购买农场后,你拥有 0 个饼干,总饼干产量为每秒 6 个。
- 下一个农场仍需 500 个饼干,你可以在约 83.3333333 秒后买下它。
- 购买第二个农场后,你拥有 0 个饼干,总饼干产量为每秒 10 个。
- 再下一个农场仍需 500 个饼干,你可以在 50 秒后买下它。
- 购买第三个农场后,你拥有 0 个饼干,总饼干产量为每秒 14 个。
- 再买一个农场仍需 500 个饼干,但实际上此时不买农场更划算:你可以直接等待直到拥有 X=2000 个饼干,这需要约 142.8571429 秒。
总时间:250 + 83.3333333 + 50 + 142.8571429 = 526.1904762 秒。
注意,饼干是连续获得的:游戏开始 0.1 秒后你将拥有 0.2 个饼干,游戏开始 $\pi$ 秒后你将拥有 $2\pi$ 个饼干。
输入格式
第一行包含测试用例的数量 T。接下来有 T 行,每行包含三个空格分隔的实数:C、F 和 X,其含义如题目描述所述。
C、F 和 X 均由至少 1 位数字、1 个小数点以及 1 到 5 位小数组成。没有前导零。
输出格式
对于每个测试用例,输出一行 "Case #x: y",其中 x 是测试用例编号(从 1 开始),y 是获得 X 个美味饼干所需的最短时间(秒)。
建议将 y 输出到小数点后 7 位,但这并非强制要求。如果 y 与正确答案的绝对误差或相对误差在 $10^{-6}$ 以内,则视为正确。有关误差的定义及可接受的实数格式,请参阅 FAQ。
数据范围
$1 \le T \le 100$。
小数据
$1 \le C \le 500$ $1 \le F \le 4$ $1 \le X \le 2000$
大数据
$1 \le C \le 10000$ $1 \le F \le 100$ $1 \le X \le 100000$
样例
输入格式 1
4 30.0 1.0 2.0 30.0 2.0 100.0 30.50000 3.14159 1999.19990 500.0 4.0 2000.0
输出格式 1
Case #1: 1.0000000 Case #2: 39.1666667 Case #3: 63.9680013 Case #4: 526.1904762
说明
Cookie Clicker 由 Orteil 创建。Orteil 不认可且未参与 Google Code Jam。