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;  
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章