我现在做的是专题二的编号为1008的试题,具体内容如下:猜数字
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 27 Accepted Submission(s) : 20
Problem DescriptionA有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。 <br>问B猜n次可以猜到的最大数。 <br>Input第1行是整数T,表示有T组数据,下面有T行 <br>每行一个整数n (1 ≤ n ≤ 30) <br>Output猜n次可以猜到的最大数<br>Sample Input2<br>1<br>3Sample Output1<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;
}
Program2_1008
最新推荐文章于 2024-03-08 22:08:15 发布