11714 - Blind Sorting

来源:互联网 发布:多梦疲劳知乎 编辑:程序博客网 时间:2024/05/01 02:56

/*

这是关于第K大数最小比较次数的一个题

一个序列  :  数两两比较 大的进入下一层  形成一个堆  这样 得到最大数至少需要n-1次

寻找第二大的数 只需要比较那些 与最大数比较过的数 也就是每层有一个数 (除去最后一层)

需要(int)log2(n-1)次  。

*/

#include<cstdio>

#include<cmath>
int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        printf("%d\n",n+int(log(n-1)/log(2))-1);
    }
    return 0;
}
原创粉丝点击