lower_bound函数的本质是二分查找,这个函数的作用是在给定的数组中,如果要寻找某一个数,这个函数的作用就是能找到数组中大于等于该值的下标。
代码展示:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[100];
int n;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
}
int t;
while(cin>>t)
{
int p=lower_bound(a+1,a+n+1,t)-a;
cout<<p<<endl;
}
return 0;
}
输入:5 1 2 3 4 5 t=1,2,3,4,5,6,7,8,
输出:1 2 3 4 5 6 6 6 6
代码的利用:
题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/3706.html
思路:先打一个素数筛,然后再用lower_bound函数求出结果的下标
代码如下:
#include<bits/stdc++.h>
using namespace std;
# define INF 5000004
int a[INF];
int b[INF];
int num=0;
void SelectPrime()
{
for(int i=2; i<=INF; i++)
{
if(a[i]==1)
continue;
else
{
b[++num]=i;
//cout<<num<<" "<<b[num]<<endl;
for( int j=i; j<=INF; j+=i)
{
a[j]=1;
}
}
}
}
int main()
{
int n;
memset(a,0,sizeof(a));
SelectPrime();
while(cin>>n)
{
int p=lower_bound(b+1,b+num+1,n)-b;
cout<<p<<" "<<b[p]<<endl;
}
return 0;
}