Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 87769 | Accepted: 42382 |
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)
Source
#include <stdio.h>
double len[500];
int tot;
int check(double x)
{
if (x>1e-8) return 1;
return -1;
}
void pre()
{
len[0]=0.0;
for(tot=1;check(5.20-len[tot-1])>0;tot++)
len[tot]=len[tot-1]+1.0/(tot+1);
}
int main()
{
double x;
int left,right,mid;
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
pre();
scanf("%lf",&x);
while((x-0.0)>1e-8)
{
left=0;right=tot;
while(left+1<right)
{
mid=(left+right)/2;
if (check(x-len[mid])>0) left=mid;
else right=mid;
}
printf("%d card(s)\n",right);
scanf("%lf",&x);
}
}