引用
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 55539 | Accepted: 26014 |
Description
How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We're assuming that the cards must be perpendicular to the table.) With two cards you can make the top card overhang the bottom one by half a card length, and the bottom one overhang the table by a third of a card length, for a total maximum overhang of 1/2 + 1/3 = 5/6 card lengths. In general you can make n cards overhang by 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) card lengths, where the top card overhangs the second by 1/2, the second overhangs tha third by 1/3, the third overhangs the fourth by 1/4, etc., and the bottom card overhangs the table by 1/(n + 1). This is illustrated in the figure below.
Input
Output
Sample Input
1.00 3.71 0.04 5.19 0.00
Sample Output
3 card(s) 61 card(s) 1 card(s) 273 card(s)
分析:
输入0.01~5.20的实数.以输入0.00退出.
按公式求和,并计算符合条件的n.
代码(感觉这道题简单)
#include <conio.h>
#include <iostream>
using namespace std;
struct Test_case
{
float n;
struct Test_case* next;
};
int main()
{
Test_case length;
Test_case* tail;
float In;
tail=&length;
tail->next=NULL;
cout<<"Sample Input:0.01~5.20"<<endl;
while(1)
{
cin>>In;
if(In==0.00) break;
if(In>=0.01 && In<=5.20)
{
tail->next=new Test_case;
tail=tail->next;
tail->n=In;
tail->next=NULL;
}
else
{
cout<<"wrong!(0.01~5.20)"<<endl;
}
}
tail=length.next;
float sum=0;
int CardNo=1;
char op[12];
while(tail)
{
for(sum=0,CardNo=1;sum<tail->n;CardNo++)
sum=sum+(float)1/(CardNo+1);
sprintf(op,"%d card(s)",CardNo-1);
cout<<op<<endl;
tail=tail->next;
}
_getch();
return 0;
}