猜数字
Time Limit : 3000/1000ms (Java/Other) Memory Limit :32768/32768K (Java/Other)
Total Submission(s) : 58 Accepted Submission(s) : 39
Problem Description
A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。<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到m间,你最多只要猜log2(m)+1(取整)次,所以易知==>m=2^n-1.即猜n次,你能猜到的最大数的数为2^n-1.我们也可认为,在数1到2^n-1间,我们都可以在n次内猜出来。
#include<iostream>
#include<math.h>
using namespace std;
intmain()
{
intn,t;
while(scanf("%d",&t)!=EOF)
{
while(t--&&scanf("%d",&n))
{
printf("%d\n",(int)pow(2,n)-1);
}
}
return 0;
}