【poj 1003】Hangover 题解&代码(c++)

来源:互联网 发布:mhx网络联机 编辑:程序博客网 时间:2024/06/05 22:33

题目链接


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


题解:


也是挺简单的模拟题,但害怕poj又出一些坑爹的数据卡时,就先预处理出n个卡片能达到的长度,然后针对每一问用二分做,没试过直接模拟能不能过。


代码


#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;double a[1005],now;int main(){    double tot=0.0;    for (int i=1;i<=350;i++)    {        double tmp=(i+1)*1.0000;        tot+=1.000/tmp;        a[i]=tot;    }    while(cin>>now)    {        if (now==0.00) return 0;        int l=1,r=300,ans=1;        while(l<=r)        {            int mid=(l+r)/2;            if (a[mid]<now)            l=mid+1;            else            {                r=mid-1;                ans=mid;            }        }        printf("%d card(s)\n",ans);    }} 
原创粉丝点击