Primes on Interval+codeforces+筛选法打表
2014-07-27 20:30
471 查看
Primes on Interval
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You've decided to carry out a survey in the theory of prime numbers. Let us remind you that a prime number is a positive integer that has exactly two distinct positive integer divisors.
Consider positive integers a,
a + 1, ...,
b (a ≤ b). You want to find the minimum integer
l (1 ≤ l ≤ b - a + 1) such that for any integer
x (a ≤ x ≤ b - l + 1) among
l integers x,
x + 1, ...,
x + l - 1 there are at least k prime numbers.
Find and print the required minimum l. If no value
l meets the described limitations, print -1.
Input
A single line contains three space-separated integers a, b, k (1 ≤ a, b, k ≤ 106; a ≤ b).
Output
In a single line print a single integer — the required minimum
l. If there's no solution, print -1.
Sample test(s)
Input
Output
Input
Output
Input
Output
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You've decided to carry out a survey in the theory of prime numbers. Let us remind you that a prime number is a positive integer that has exactly two distinct positive integer divisors.
Consider positive integers a,
a + 1, ...,
b (a ≤ b). You want to find the minimum integer
l (1 ≤ l ≤ b - a + 1) such that for any integer
x (a ≤ x ≤ b - l + 1) among
l integers x,
x + 1, ...,
x + l - 1 there are at least k prime numbers.
Find and print the required minimum l. If no value
l meets the described limitations, print -1.
Input
A single line contains three space-separated integers a, b, k (1 ≤ a, b, k ≤ 106; a ≤ b).
Output
In a single line print a single integer — the required minimum
l. If there's no solution, print -1.
Sample test(s)
Input
2 4 2
Output
3
Input
6 13 1
Output
4
Input
1 4 3
Output
-1
解决方案:很简单,先打表,筛选法。再二分答案;
code:#include<iostream> #include<cstdio> #include<cstring> #include<vector> #define MMAX 1000010 using namespace std; vector<int >prime; bool vis[MMAX]; int num[MMAX]; void prime_init1(){ memset(vis,false,sizeof(vis)); //memset(num,0,sizeof(num)); prime.push_back(2); for(int i=3; i<MMAX; i+=2) { // num[i]=num[i-1]; if(!vis[i]) { // num[i]++; prime.push_back(i); for(int j=i+i; j<MMAX; j+=i) vis[j]=true; } } }///打法一,虽效率比打法2高,但不能纪录每个前缀的素数的个数。 void prime_init2() { memset(vis,false,sizeof(vis)); memset(num,0,sizeof(num)); for(int i=2; i<MMAX; i++) { num[i]=num[i-1]; if(!vis[i]) { num[i]++; prime.push_back(i); for(int j=i+i; j<MMAX; j+=i) vis[j]=true; } } }///筛选法打打表,并记录每段前缀的素数个数 int a,b,k; bool get(int l) { for(int x=a; x<=b-l+1; x++) { if(num[x+l-1]-num[x-1]<k) return false; } return true; } int main() { prime_init2(); while(~scanf("%d%d%d",&a,&b,&k)) { int l; bool flag=false; if(num[b]-num[a-1]<k) { printf("-1\n"); continue; } int low=1,high=b-a+1,mid; int ans; while(low<=high){ mid=(high+low)/2; if(get(mid)){ ans=mid; high=mid-1; } else low=mid+1; }///二分查找l cout<<ans<<endl; } return 0; }
相关文章推荐
- Primes on Interval(素数打表+二分)
- codeforce 237 C. Primes on Interval
- CodeForce 237C Primes on Interval(二分+ 素数筛法)
- Primes on Interval(二分 + 素数打表)
- 【Codeforcdes 237C. Primes on Interval】+ 二分
- Codeforces 237C:Primes on Interval(素数打表+二分)
- Primes on Interval 【打表+二分】
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)C. Jury Marks
- Codeforces Round #129 (Div. 1) A Little Elephant and Interval
- codeforces 237 C. Primes on Interval
- Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
- A - On Segment's Own Points CodeForces - 397A
- Codeforces Round #170 (Div. 1) E. Binary Tree on Plane(费用流)
- Codeforces Round #427 (Div. 2) A. Key races B. The number on the board C. Star sky
- Not Equal on a Segment CodeForces - 622C (思维)
- Educational Codeforces Round 7 C. Not Equal on a Segment 并查集
- Educational Codeforces Round 1 B. Queries on a String
- codeforces Gym 100418D BOPC 打表找规律,求逆元
- C - Another Problem on Strings CodeForces - 165C
- Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)C. Five Dimensional Points