R7-12 h0008.卡片延伸长度 (15 分)
您能使一叠在桌子上的卡片向桌子外伸出多远?如果是一张卡片,这张卡片向桌子外伸出卡片的一半长度。(卡片以直角伸出桌子。)如果有两张卡片,就让上面一张卡片向外伸出下面那张卡片的一半长度,而下面的那张卡片向桌子外伸出卡片的三分之一长度,所以两张卡片向桌子外延伸的总长度是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表示输入结束,每个测试用例一行,是一个3位数正浮点数c,最小值0.01,最大值5.20。
输出格式:
对每个测试数据c,输出要伸出卡片长度c所最少要用的卡片的数目,输出形式见样例输出。
输入样例:
1.00 3.71 0.04 5.19 0.00
输出样例:
1. 3 card(s) 2. 61 card(s) 3. 1 card(s) 4. 273 card(s)
#include<bits/stdc++.h> using namespace std; int main(){ double c; while(cin>>c,c!=0){ double s=0; int n; for(n=2;;n++){ s+=1.0/n; if(s>c){ cout<<n-1<<endl; break; } } } return 0; }