C1019 - 至少需要多少张纸牌

题目描述

你能使一叠纸牌悬出桌子多远?

如果你有一张牌,你可以最大悬出半张牌的长度。(我们假设纸牌必须垂直于桌子。)有两张牌时,你可以使顶部的牌悬出纸牌的一半长度,而底部的牌悬出桌子的长度为一张牌的三分之一,因此总共最大悬出距离为1/2 + 1/3 = 5/6 张牌长度。

以此类推,n张牌伸出桌子的长度为:1/2 + 1/3 + 1/4 + ... + 1/(n + 1) 纸牌的长度,其中顶部的牌悬出纸牌的 1/2,第二张牌悬出纸牌的 1/3,第三张牌悬出纸牌的 1/4,依此类推,而底部的牌悬出桌子的距离为 1/(n + 1)。

如下图所示:

1.png

输入格式

第一行是1个正整数m,代表接下来会有m组测试数据

接下来m行,每行一个测试数据,一个正浮点数len,代表纸牌一共伸出去的长度

题目中的浮点数建议使用double类型存储和处理

输出格式

输出m行,每一行是对于每个测试用例len,输出达到至少要超过len的卡片长度所最少要用的卡片数目,具体的输出样式参考输入输出样例

提示:

注意是要超过纸牌伸出去的长度len,不包含纸牌伸出去的长度len,也就是需要的卡片的数目组成的长度要大于len,不包含等于len的情况

输入输出样例

输入样例 输出样例
4
1.00
3.71
0.04
5.19
3 card(s)
61 card(s)
1 card(s)
273 card(s)

注意输出数据格式是:数字 + 空格 + card(s)字符串的样式,不要弄错了

输入输出样例说明

输入样例

第1行:4,代表接下来会有4组测试数据

第2行:1.00,代表纸牌一共伸出去的长度为1.00

第3行,第4行,第5行与第2行含义一致

输出样例

第1行,代表伸出长度超过1.00,最少需要的纸牌数是3,输出格式是:3 card(s)

其他的行以此类推

这里需要注意的是伸出的长度要超过1.00,也就是要大于1.00(不包含1.00的长度)所需要的纸牌数目

数据范围与提示

30%的数据:$1 \le m \le 100$,$0.01 \le len \le 5.20$

50%的数据:$1 \le m \le 1000$,$0.01 \le len \le 13.39$

100%的数据:$1 \le m \le 10000$,$0.01 \le len \le 13.39$

提示:

len为5.20时,需要的卡片的数量约为:276

len为13.39,需要的卡片的数量约为:997276

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1019.in,输出文件名为:C1019.out