水題-但題意難理解 Problem 1008 猜數字

Problem ID:1008 猜數字


簡單題意:A有1數m,B來猜。B每猜一次,A就說“太大”、“太小”或“對了”。問B猜n次可以猜到的最大數。


解題思路形成過程:(題幹很短,問題很簡單,但是很難理解,想了好久也沒明白是什麼意思。翻了翻別人的博客才明白…)

首先,要注意題幹中的“可以猜到”四個字,它的意思是猜了n次後一定能夠猜到。所以一旦n確定了,可以猜到的最大數也就確定了。 

n=1時,可以猜到的最大數只能是1。(如果給的數是2或其他數的話,就不一定“可以猜到”了)

n=2時,先猜2,如果A說“大了”,則再猜1;如果A說“小了”,則再猜3。所以能猜到的最大數就是3。

n=3時,先猜4,……能猜到的最大數就是7。

依次類推

然後很容易發現能夠猜到的最大數的規律:最大數=(2^n)-1。

弄清題意、發現規律後在代碼中直接套用公式即可。


感想:有些題目比較簡單,但題目很難理解,要結合給出的例子反覆思考題乾的意思,特別是要注意一些關鍵性的字眼(比如這道題中的“可以猜到”四個字)。


代碼:

#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--){
        int m;
        scanf("%d",&m);
        long long s=pow(2,m)-1;//注意m的取值範圍!
        printf("%d\n",s);
    }
    return 0;
}


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