Program2_1008

本文介绍了一道猜数字的问题,并给出了详细的解题思路与代码实现。通过数学归纳法得出,猜n次能猜到的最大数为(2^n)-1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我现在做的是专题二的编号为1008的试题,具体内容如下:

猜数字

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 27   Accepted Submission(s) : 20
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次,能猜到的最大数只能是1如果能猜两次,B先猜2,如果大了就猜1,小了猜3,能猜到的最大的数是3所以,如果能猜3次,我第一次应该猜4,因为如果大了,我能保证两次之内猜出来(根据上面的结果)。如果小了,我也是一样可以猜出3个数。结果是3+1+3=7。如果能猜4次,我第一个数应该猜8。找到的规律是,猜n次能猜到的最大数是(2^n)-1。


编写代码:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n;
    cin >> n;
    while (n--)
    {
        int s;
        cin >> s;
        cout << (int)pow(2, s) - 1 << endl;
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值