POJ1003-Hangover

http://poj.org/problem?id=1003

水题不解释,非常无聊地用了一些二分- -#

#include<stdio.h>
#include<math.h>
const double delta=1e-6;
int main(void)
{
    double len[300],c;
    int i,l,r,mid;
    len[0]=0.0;
    for(i=1;i<300;i++)
       len[i]=len[i-1]+1.0/(i+1);
    while(scanf("%lf",&c),c)
    {
        l=0;r=i;
        while(l+1<r)
        {
            mid=(l+r)/2;
            if(fabs(len[mid])<c)
               l=mid;
            else
               r=mid;
        }
        printf("%d card(s)\n",r);
    }
    return 0;
}
posted @ 2012-08-28 20:26  Yogurt Shen  阅读(71)  评论(0编辑  收藏  举报