#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std; int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=-)
{
int r=,l=n,mid,sum=;
while(r<=l)
{
sum++;
mid=(r+l)/;
if(mid==k) {printf("%d\n",sum);break;}
if(mid<k) r=mid+;
else l=mid-;
} }
return ;
}
我们现在都知道二分查找的主体是一个while循环,在每次循环里面进行询问,从而决定是找到了数据停止循环还是改变查找区间的范围。现在就是考验大家是否理解了原理的时候了!
运用二分查找在序列{1,2,3,……,n}中找到k需要循环多少次?
Input
输入多组数据, 每组输入两个整数n和k,占一行(0<= k <= n)。
Output
对每组输入,输出在序列{1,2,3,……,n}中找到k的循环次数。
Sample Input
5 2
5 1
10 3
Sample Output
3
2
3