poj1003

题目大意:超越悬挂
你可以把卡片最远堆到距离桌子多远?如果你有一张卡片,你可以堆卡片长度的一半如果有两张卡片那么可以堆1/2+1/3=5/6,如果有n张卡片那么可以堆1/2+1/3+1/4+。。。。。1/n+1/(n+1),最上面的可以漏出来1/2,依次往下,最下面的可以漏出来1/(n+1),如下图所示

 poj1003

 

 

  下面给一个长度问最少多少张卡片才可以超过这个长度
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)\n ", i);
    }
     return  0;

} 

 

你可能感兴趣的:(poj)