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个正整数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支持两种输入输出模式