2016SDAU课程练习二1008猜数字

原题:Problem Description
A有1数m,B来猜.B每猜一次,A就说&quot;太大&quot;,&quot;太小&quot;或&quot;对了&quot; 。 <br>问B猜n次可以猜到的最大数。 <br>
 


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


Output
猜n次可以猜到的最大数<br>
 


Sample Input
2<br>1<br>3
 


Sample Output

1<br>7<br>

1.题目编号:1008

2.简单题意:猜数字,给出猜的次数,输出猜的最大数字。

3.解题思路形成:就如同数学上的求根,用了二分法,n=1时,m=(1+m)/2,m=1;n=2时,m=((1+m)/2+1+m)/2,m=3......n=3时,m=7,....所以n=N时,m=2^N-1;

4.感想:开始并不懂,只是看到n=1,m=1;n=3,m=7;看到形式上是m=2^n-1;后来心虚的百度了下,,,有的没看懂,有的说出了二分法,然后就试了试,结果就对了!

5.AC代码:

#include <iostream>  
#include <cmath>  
using namespace std;  
  
int main()  
{  
    int t,n;  
    while(cin >> t)  
    {  
        while(t--)  
        {  
            cin >> n;  
            cout << (int)pow(2,n)-1  << endl;  
        }  
    }  
  
    return 0;  
}  

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页