lab6 1002
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #include<vector> 6 #define rep(i,l,r)for(int i=l;i<r;i++) 7 #define clr(a,x)memset(a,x,sizeof(a)) 8 using namespace std; 9 vector<int>a; 10 const int maxn=1000000; 11 bool pd[maxn]; 12 int main() 13 { 14 clr(pd,-1); 15 rep(i,2,maxn>>1) 16 if(pd[i]) for(int j=i<<1;j<maxn;j+=i) 17 pd[j]=0; 18 rep(i,0,maxn) if(pd[i]) a.push_back(i); 19 int n; 20 while(scanf("%d",&n)&&n!=-1) 21 if(n!=-1) 22 printf("%d\n",lower_bound(a.begin(),a.end(),n)-a.begin()-1); 23 return 0; 24 }
lower_bound..
1002. 选择
|
||||||
|
||||||
Description
LLK是一名04级的牛人,他拿到了CMU跟UPen的Offer。但这让他很为难,去哪间好呢?突然他想起了他有一件宝物,它能预测他去哪间学校更有利于他以后的发展,而这件宝物的重量为W。虽然LLK已将所有宝物按重量大小从小到大排出来了,但他的宝物太多了,如果从头一个个物品慢慢找要花很长时间。不过这些宝物的重量有一个特性,它们的重量都是素数,而且每个物品的重量都与每个素数对应,例如第1个物品的重量是2,第2个物品是3,第3个物品是5...。以下是物品的重量序列:2,3,5,7,11,13...... 亲爱的师弟师妹们,你们可以帮帮他吗? Input
一个素数W(2<=W<10^6),表示要找到宝物的重量;测试数据有多组,W为-1时,表示结束。 Output
一个整数,输出要找到的宝物是第几个。 Sample Input
5 -1 Sample Output
3 Problem Source: Lab06 |