练习二1008

猜数字

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就说&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到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;

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值