#P13397. [GCJ 2010 #1C] Load Testing

[GCJ 2010 #1C] Load Testing

Description

现在你已经赢得了 Code Jam 并被 Google 雇佣为软件工程师,你被分配到他们极受欢迎的编程竞赛网站工作。

Google 预计明年会有很多参赛者(PP)参加 Code Jam,他们希望确保网站能够同时支持这么多人。在 2010 年的 Code Jam 期间,你了解到该网站至少可以同时支持 LL 个人而不会出错,但你也知道目前网站还无法支持 PP 个人。

为了确定还需要增加多少台机器,你希望知道网站最多能支持多少人,误差在 CC 倍以内。也就是说,存在一个整数 aa,你知道网站可以支持 aa 个人,但不能支持 a×Ca \times C 个人。

你可以进行一系列的“负载测试”,每次测试可以确定网站是否能支持至少 XX 个人(XX 是你选择的整数)。如果你采用最优策略,根据前面测试的结果选择后续的测试,那么在最坏情况下,你需要进行多少次负载测试,才能确定网站最多能支持多少人,误差在 CC 倍以内?

Input Format

输入的第一行包含测试用例的数量 TT。接下来的 TT 行,每行包含用空格分隔的三个整数 LLPPCC

Output Format

对于每个测试用例,输出一行,格式为 "Case #xx: yy",其中 xx 是测试用例编号(从 1 开始),yy 是在最坏情况下你需要进行的负载测试次数,才能确定网站最多能支持多少人,误差在 CC 倍以内。

4
50 700 2
19 57 3
1 1000 2
24 97 2
Case #1: 2
Case #2: 0
Case #3: 4
Case #4: 2

Hint

样例解释

在第 2 个测试用例中,我们已经知道网站可以支持 19195757 个人。由于这两个数相差 33 倍,因此我们不需要进行任何测试。

在第 4 个测试用例中,我们可以测试 4848;但如果网站能支持 4848 个人,还需要继续测试,因为 48×2<9748 \times 2 < 97。我们可以测试 4949;但如果网站不能支持 4949 个人,还需要继续测试,因为 24×2<4924 \times 2 < 49。所以我们需要进行两次测试。

数据范围

  • 1T10001 \leqslant T \leqslant 1000
  • 2C102 \leqslant C \leqslant 10
  • LLPPCC 均为整数。

小数据集(14 分,测试集 1 - 可见)

  • 1L<P1031 \leqslant L < P \leqslant 10^3

大数据集(22 分,测试集 2 - 隐藏)

  • 1L<P1091 \leqslant L < P \leqslant 10^9

由 ChatGPT 4.1 翻译