水题-但题意难理解 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
#include
#include
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;
}


你可能感兴趣的:(水题-但题意难理解)