Ural 鹰蛋
有一栋共 F 层的建筑,楼层从最低的第 1 层开始编号。你拥有许多性质完全相同的鸡蛋,每个鸡蛋都装在相同的保护容器中。对于建筑中的每一层,你都希望确定从该层扔下鸡蛋时,鸡蛋是否会破裂。
鸡蛋是否破裂满足单调性:如果鸡蛋从第 i 层扔下时会破裂,那么从任意第 j 层扔下时也一定会破裂,其中 j≥i;如果鸡蛋从第 i 层扔下时不会破裂,那么从任意第 j 层扔下时也一定不会破裂,其中 j≤i。
定义 Solvable(F,D,B):当且仅当存在一种算法,能够确定一栋 F 层建筑中每一层的鸡蛋破裂情况,并且满足以下限制时,该命题为真:
- 最多进行 D 次投掷,每次可以选择任意楼层并投掷一个鸡蛋;
- 最多允许 B 个鸡蛋破裂。
可以假设你至少拥有 D 个鸡蛋。
输入格式
第一行包含测试用例数量 N。
接下来 N 行,每行包含三个整数 F,D,B,表示一组测试用例。
保证所有输入均满足 Solvable(F,D,B) 为真。
输出格式
对于每组测试用例,输出一行,格式为:
Case #x: Fmax Dmin Bmin
其中,x 为从 1 开始的测试用例编号,各量定义如下:
- Fmax:满足 Solvable(F′,D,B) 为真的最大 F′。如果该值大于或等于 232,则输出 −1。换言之,当且仅当 Solvable(232,D,B) 为真时,Fmax=−1;
- Dmin:满足 Solvable(F,D′,B) 为真的最小 D′;
- Bmin:满足 Solvable(F,D,B′) 为真的最小 B′。
三个整数之间以一个空格分隔。
样例输入
2
3 3 3
7 5 3
样例输出
Case #1: 7 2 1
Case #2: 25 3 2
数据范围
- 1≤N≤100;
- 小规模数据:1≤F≤100,1≤D≤100,1≤B≤100;
- 大规模数据:1≤F≤2×109,1≤D≤2×109,1≤B≤2×109。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
2
3 3 3
7 5 3
输出
Case #1: 7 2 1
Case #2: 25 3 2