SP6562 PRUBALL - Esferas
题目背景
由于 SPOJ 和洛谷在编程语言配置上存在一些差异,**请使用 C++ 98 提交。**
题目描述
有一个 $M$ 层高的楼,并且你有 $B$ 个鸡蛋,存在一个楼层 $K$ 使得在低于它的楼层向下扔鸡蛋,鸡蛋不会碎;而在 $K$ 层和高于 $K$ 层向下扔鸡蛋,鸡蛋会碎。
求最坏的情况下,扔几次就能确定层数 $K$,并输出最小的扔的次数。
最坏的情况是指:如果我们只有一个鸡蛋,我们必须从第一层开始扔到 $M$ 层,在最坏的情况下需要 $M$ 次; 如果我们有两个鸡蛋,假设我们从第 $n$ 层扔下第一个鸡蛋,如果碎了,第二个鸡蛋需要从第 $1$ 层开始扔到 $n - 1$ 层,在最坏的情况下会扔 $n$ 次,(第一个鸡蛋扔了一次,第二个鸡蛋最坏的情况扔了 $n - 1$ 次) ,如果从第 $n$ 层掉落时它没有破裂,我们最坏的情况要从 $n + 1$ 层扔到 $M$ 层。
输入格式
输入的第一行包含一个整数 $T$,表示测试样例数量。
每个样例数据包含 $3$ 个十进制整数值的一行组成:
问题编号、鸡蛋的数量 $B$、楼层的高度 $M$。
输出格式
对于每个样例,输出一行:问题编号和对应于 $B$ 和 $M$ 的值所需的最小丢弃数。
说明/提示
对于 $100\%$ 的数据,$1\le T\le100$,$1\le B\le100$,$1\le M\le1000$。