题目大意:超越悬挂
你可以把卡片最远堆到距离桌子多远?如果你有一张卡片,你可以堆卡片长度的一半如果有两张卡片那么可以堆1/2+1/3=5/6,如果有n张卡片那么可以堆1/2+1/3+1/4+。。。。。1/n+1/(n+1),最上面的可以漏出来1/2,依次往下,最下面的可以漏出来1/(n+1),如下图所示
下面给一个长度问最少多少张卡片才可以超过这个长度
easy 了,直接模拟吧
#include<stdio.h>
#define maxn 1000005
double a[maxn];
int main()
{
int i;
double L;
for(i=1; i<maxn; i++)
a[i]= a[i-1]+1.0/(i+1);
while(scanf("%lf",&L)!= EOF && L)
{
for(i=1; i<maxn; i++)
if(a[i]>= L)break;
printf("%d card(s) ", i);
}
return 0;
#define maxn 1000005
double a[maxn];
int main()
{
int i;
double L;
for(i=1; i<maxn; i++)
a[i]= a[i-1]+1.0/(i+1);
while(scanf("%lf",&L)!= EOF && L)
{
for(i=1; i<maxn; i++)
if(a[i]>= L)break;
printf("%d card(s) ", i);
}
return 0;
}