hdu Guess Game 3750

http://acm.hdu.edu.cn/showproblem.php?pid=3750


水题:二分查找,求查找的次数的数学期望,1-N区间的每个数出现的概率相等

#include <iostream>
#include <cstdio>

using namespace std;

void dfs(int &sum,int l,int r,int cnt)
{
    if(l>r) return;
    sum+=cnt;
    if(l==r) return;
    int m=(l+r)>>1;
    dfs(sum,l,m-1,cnt+1);
    dfs(sum,m+1,r,cnt+1);
}
int main()
{
    int n,ans;
    while(scanf("%d",&n)==1)
    {
        ans=0;
        dfs(ans,1,n,1);
        printf("%.2lf\n",ans*1.0/n);
    }
    return 0;
}



你可能感兴趣的:(hdu Guess Game 3750)