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 }
View Code

lower_bound..

1002. 选择
 
 
Total: 21 Accepted: 11
 
     
     
 
Time Limit: 1sec    Memory Limit:256MB
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
 Copy sample input to clipboard
5
-1
Sample Output
3

Problem Source: Lab06

posted @ 2015-07-02 13:45  ChenThree  阅读(154)  评论(0编辑  收藏  举报