您的位置:首页 > 其它

lab6 1002

2015-07-02 13:45 316 查看
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define rep(i,l,r)for(int i=l;i<r;i++)
#define clr(a,x)memset(a,x,sizeof(a))
using namespace std;
vector<int>a;
const int maxn=1000000;
bool pd[maxn];
int main()
{
clr(pd,-1);
rep(i,2,maxn>>1)
if(pd[i]) for(int j=i<<1;j<maxn;j+=i)
pd[j]=0;
rep(i,0,maxn) if(pd[i]) a.push_back(i);
int n;
while(scanf("%d",&n)&&n!=-1)
if(n!=-1)
printf("%d\n",lower_bound(a.begin(),a.end(),n)-a.begin()-1);
return 0;
}


View Code
lower_bound..

1002. 选择

Total:21Accepted: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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: