描述
图书馆某书架有三层,第一层图书编号从1到36,第二层图书编号从1到15,第三层图书编号从5到26,编号都是连续的,现在从每层中拿下一本书,请用二分法查找,统计每层中找到这本书需要的比较次数。
输入描述
输入3个整数,用空格隔开,分别代表某层书架中图书的编号。
输出描述
输出3个整数,用空格隔开,分别为1、2、3层书架的查找次数。
样例输入 1
5 5 5
样例输出 1
5 4 4
提示
提示:这里二分法取中间值的方法是,(L+R)/2,L为某层书架最左侧图书编号,R为最右侧图书编号。
代码:
#include<bits/stdc++.h>
using namespace std;
int a(int l,int r,int b)
{int a=0;while(l<=r){a++;int mid =(l+r)/2;if(mid==b) {return a;} else if(mid<b) {l=mid+1;} else {r=mid-1;}}return a;
}int main() {int n,m,e;cin>>n>>m>>e;int b=a(1,36,n);int c=a(1,15,m);int d=a(5,26,e);cout <<b<<" "<<c<<" "<<d;return 0;
}
制作不易请点赞!!