• 【乱搞】【二分】【AOJ-615】神算诸葛亮


    Description
    相传有一天,诸葛亮把将士们召集在一起,说:“你们中间不论谁,从1~1024中任意挑选一个整数,记在心里,我提十个问题,只要求回答'是'或'大于','小于'.十个问题全答完以后,我 就会‘算’出你心里记的那个数。”诸葛亮刚说完,一个谋士站起来说,他已经选好了一个数。诸葛亮问道:“你选的数大于512?”谋士答:“不是。”诸葛亮又接连向这,谋士提了九个问题,谋士一一作了回答。诸葛亮最后说:“你记的那个数是1。”谋士听了极为惊奇,因为这个数字真是他选的数。你知道诸葛亮是怎么妙算的吗?现在给你一个整数N,表示你要猜一个范围为【1,N】的数字(这个数字已经提前确定了),你知道最坏情况下猜几次才能确定答案吗?
    Input
    输入包括多组数据,以文件(EOF)结束。
    每组测试数据包括一个整数N(1<= N <= 10 ^ 9)
    Output
    每组测试数据输出一个整数,表示最多猜几次才能确定答案。
    Sample Input
    1024
    2
    

     
    Sample Output
    10
    1
    
    思路:
    可以直接取log2 但是我是模拟的
    每次二分 然后取较大的部分继续二分 直到可以一次确定
     
    参考代码:
    #include <stdio.h>  
    int main()  
    {  
        int n;  
        while(scanf("%d",&n)!=EOF)  
        {  
            int a=(n+1)/2;  
            int num=1;  
            if(n==1)  //n==1时不需要猜
            {  
                printf("0
    ");  
                continue;  
            }  
            while((n-a)!=1)  //取右端点每次二分 直到n-a==1 因为到不了n
            {  
                a=(a+1+n)/2;  
                num++;  
            }  
            printf("%d
    ",num);  
        }  
        return 0;  
    }
    
     
  • 相关阅读:
    setjmp()和longjmp()函数
    C语言过程活动记录
    【剑指Offer】字符串的排列
    python剑指offer系列二叉树中和为某一值的路径
    二叉搜索树的后续遍历
    如何设置学习率
    各种机器学习算法的优缺点(未完成)
    机器学习中梯度下降法和牛顿法的比较
    特征图大小的计算
    为什么L1稀疏,L2平滑?
  • 原文地址:https://www.cnblogs.com/ahu-shu/p/3511711.html
Copyright © 2020-2023  润新知