您的位置:首页 > 其它

北大PKU在线测试1003

2015-04-21 17:09 211 查看
1003描述:你能在一张桌子上叠放多少张牌?如果你有一张牌,你可以悬的最大长度是另一张牌长度的一半。
(我们假设该牌必须垂直于桌子)有两张牌,你可以让顶部的一张牌悬在底部那张牌一半的长度位置处,而底部那张牌的三分之一悬在桌子外面,悬出的总长度为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)。下图说明了这一点。



输入:输入一个或多个测试用例,输入0.00代表结束输入。每个测试用例是单行的,而且是一个正的浮点数C,其值在0.01和5.20范围内。而且只能包含三个数字。

输出:对于每个测试用例,输出牌的数量是悬出的牌长满足C长度的最低数量。在用例中,使用精确的输出格式

样式输入:

1.00
3.71
0.04
5.19
0.00
样式输出:

3 card(s)
61 card(s)
1 card(s)
273 card(s)

程序代码:

#include<iostream>

#include<math.h>

using namespace std;

int main(){

float tem;

while(cin>>tem){

if(tem==0.00)break;

int i,n=2;

float sum=0.0;

for(i=2;i<=n;i++){

sum+=1.0/float(i);

if(sum>tem){

cout<<i-1<<" card(s)"<<endl;

break;

}

else if(i==n)

n++;

}

}

return 0;

}

这个程序看着英文介绍很可怕,但是只要理解了实在是太简单了,无非是一个循环,自己看代码和描述去理解吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: