您的位置:首页 > 编程语言 > Go语言

HDOJ 1056 HangOver

2011-10-10 14:35 253 查看
简单的题目,我的解法采用预处理,然后使用折半查找返回答案。

#include<stdio.h>
double answer[300];
int len=0;
double num;
int binarySearch()
{
int l=1,r=len,half;
while(l<r)
{
half=(l+r)/2;
if(answer[half]<num)
l=half+1;
else
r=half;
}
return l;
}
int main()
{
//freopen("HangOver.txt","r",stdin);
answer[len]=0;
while(++len)
{
answer[len]=1.0/(len+1)+answer[len-1];
if(answer[len]>=5.20)
break;
}
while(scanf("%lf",&num)&&num>0)
{
printf("%d card(s)\n",binarySearch());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: