• 猜数字


    Problem Description
    A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。
    问B猜n次可以猜到的最大数。
     

    Input
    第1行是整数T,表示有T组数据,下面有T行
    每行一个整数n (1 ≤ n ≤ 30)
     

    Output
    猜n次可以猜到的最大数
     

    Sample Input
    2
    1
    3
     

    Sample Output
    1
    7
    题意:都能看懂就不说了;
    解题思路:
    就是二分的思想,设闭区间为[1,m],m即为所求,利用二分的思想每次去一半向右靠(有边界不变),可以推出公式:
    (((((1+m)/2)+1+m)/2)+1+m)/2=m ;
    感悟:感觉别人做的好快啊 ,拉下的越来越多了;
    代码:
    #include
    #include
    #include
    using namespace std;
    int main()
    {
        int t,n;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            if(n==1)//一次就中只能是1;
                printf("1 ");
            else if(n==2)//两次就中只能是2;
                printf("2 ");
            else
                printf("%.0f ",pow(2,n)-1);
        }
    }

  • 相关阅读:
    构建前端第8篇之---Webstom搭建ES6运行环境
    方法重写
    继承的成员变量的访问特定
    继承的理解
    总结与新的开始
    python 小案例demo07
    python 小案例demo06
    python 小案例demo05
    python 小案例demo05 升级版石头剪刀布
    python 小案例demo04
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/5781647.html
Copyright © 2020-2023  润新知