hdu2178猜数字(二分法!!)

来源:互联网 发布:姗姗手帐小铺 淘宝 编辑:程序博客网 时间:2024/06/09 17:51

猜数字

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3813    Accepted Submission(s): 2721


Problem Description
A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。
问B猜n次可以猜到的最大数。
 

Input
第1行是整数T,表示有T组数据,下面有T行
每行一个整数n (1 ≤ n ≤ 30)
 

Output
猜n次可以猜到的最大数
 

Sample Input
213
 

Sample Output
17
#include<stdio.h>#include<math.h>int main(){int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);int ans=0;ans=pow(2,n)-1;printf("%d\n",ans);}return 0;}//解题报告:/*一开始也想到了二分,因为快速查找,二分法是熟读很快的方法。但是没有想到这样用:如果在一定区间里去查找一个数,如果区间很大,那么用二分法每次可以将范围缩小一半;那么反过来,如果要查找一个固定的数,用二分的思想,让范围一直往右靠(右端不变,左端加1),就能找到足够大的数。 假设要查找的最大数是m,则,第一次查找,(m+1)/2=m;得m=1;第二次查找,((m+1)/2+1+m)/2=m;得m=3;第三次查找,(((m+1)/2+1+m)/2+1+m)=m;得m=7;归纳:m=2^n-1; */ 


 
0 0
原创粉丝点击