A8019.查找x题解
2026-05-24 14:18:37
发布于:浙江
4阅读
0回复
0点赞
我看到用c++自带函数的都只用了一个,其实有三个(lower_bound,upper_bound,binary_search)。
今天我要用到lower_bound和binary_search(话不多说,上代码):
#include<bits/stdc++.h>
using namespace std;
int n,a[105],x;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>x;
if(binary_search(a+1,a+n+1,x)){//判断是否有这个数
cout<<lower_bound(a+1,a+n+1,x)-a;//输出位置
}
else{
cout<<-1;//输出-1
}
}
可能有人问了,我喜欢下标从开始怎么办?一般情况下,答案就行了,但我们也可以用另一个函数upper_bound。
#include<bits/stdc++.h>
using namespace std;
int n,a[105],x;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>x;
if(binary_search(a+1,a+n+1,x)){
cout<<lower_bound(a+1,a+n+1,x)-a;
}
else{
cout<<-1;
}
}
成功AC,耶!
全部评论 1
下标为0的改一下(怎么在文章中改)
#include<bits/stdc++.h> using namespace std; int n,a[105],x; int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } cin>>x; if(binary_search(a+1,a+n+1,x)){ cout<<lower_bound(a+1,a+n+1,x)-a; } else{ cout<<-1; } }7小时前 来自 浙江
1

有帮助,赞一个