Codeforces 237C Primes on Interval 【二分】
来源:互联网 发布:越南看电视的软件 编辑:程序博客网 时间:2024/04/29 19:33
题目链接:Codeforces 237C Primes on Interval
C. Primes on Interval
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard 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.
Examples
input
2 4 2
output
3
input
6 13 1
output
4
input
1 4 3
output
-1
题意:让你找到最小的l满足1 <= l <= b - a + 1,使得对于任意的x(a <= x <= b - l + 1)均有[x, x + l - 1]里面至少有k个质数。
思路:推敲下,会发现l是单调的,那么直接二分就好了。
AC代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <map>#include <set>#include <string>#include <queue>#define CLR(a, b) memset(a, (b), sizeof(a))#define fi first#define se secondusing namespace std;typedef long long LL;typedef pair<int, int> pii;const int MAXN = 1e6 + 1;const int MOD = 1073741824;const int INF = 0x3f3f3f3f;void add(LL &x, LL y) { x += y; x %= MOD; }bool vis[MAXN];int sum[MAXN];void getvis() { vis[1] = true; for(int i = 2; i < MAXN; i++) { if(vis[i]) continue; for(int j = 2*i; j < MAXN; j += i) { vis[j] = true; } } sum[0] = 0; for(int i = 1; i < MAXN; i++) { sum[i] = sum[i-1] + (vis[i] == false); }}bool judge(int o, int a, int b, int k) { for(int i = a; i <= b - o + 1; i++) { if(sum[i+o-1] - sum[i-1] < k) return false; } return true;}int main(){ getvis(); int a, b, k; while(scanf("%d%d%d", &a, &b, &k) != EOF) { int l = 1, r = b - a + 1; int ans = -1; while(r >= l) { int mid = (l + r) >> 1; if(judge(mid, a, b, k)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } printf("%d\n", ans); } return 0;}
- Codeforces 237C Primes on Interval 【二分】
- 【 Codeforces 237C Primes on Interval】+ 二分
- CodeForces - 237C Primes on Interval 【二分】
- Codeforces 237C (Primes on Interval)二分
- CodeForces 237C Primes on Interval(数学加二分)
- 【CodeForces】237C - Primes on Interval(二分)
- codeforces 237C. Primes on Interval(二分)
- 【Codeforcdes 237C. Primes on Interval】+ 二分
- codeforces 237C.Primes on Interval
- CodeForces-237C- Primes on Interval
- CodeForces 237C Primes on Interval
- Codeforces 237C Primes on Interval
- codeforces 237 C. Primes on Interval
- CodeForces 237C Primes on Interval
- CodeForces 237C Primes on Interval
- [CodeForces 273C] Primes on Interval (二分合法解)
- CodeForces - 237C Primes on Interval (素数打表&二分)
- Codeforces 237C:Primes on Interval(素数打表+二分)
- 前端ers 必须知道的几个jquery cdn加速节点
- Android红外线遥控
- HDU 2010 水仙花数(打表+水题)
- 对京东全球购的一次投诉
- Unity3D 动态创建Mesh
- Codeforces 237C Primes on Interval 【二分】
- coreData(2)
- 用kaldi平台跑timit实例
- 杨毅:不够优秀就不要腆着脸继续占便宜
- 原生js实现下拉到底事件
- iOS去掉导航栏底部黑线
- iOS语音书写功能(语音转文本)
- 二进制
- 十进制改为十六进制