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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值