Primes on Interval(素数打表+二分)
来源:互联网 发布:淘宝手机版详情页尺寸 编辑:程序博客网 时间:2024/06/15 08:05
Description
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 Input
Input
2 4 2
Output
3
Input
6 13 1
Output
4
Input
1 4 3
Output
-1
题意:输入a,b,k,问你在[a,b]里是否存在l使得a<=l<=b里有任意x,满足[x,x+l]里至少有k个素数
#include<stdio.h>#include<math.h>#include<string.h>#define maxx 1000010int r,prime[maxx],vis[maxx],cnt[maxx];void wprime(){ int m=(int)sqrt(1000000+1); r=0; memset(vis,0,sizeof(vis)); vis[0]=1; vis[1]=1; for(int i=2;i<=m;++i) { if(!vis[i]) { prime[r++]=i; for(int j=i*i;j<=1000005;j+=i) vis[j]=1; } }}void dabiao()//打二分表,cnt数组储存的是从0开始到这里有多少个素数{ wprime(); cnt[0]=0; for(int i=1;i<=1000000;++i) { if(!vis[i]) cnt[i]=cnt[i-1]+1; else cnt[i]=cnt[i-1]; }}int check(int a,int b,int k,int l)//检查是否满足题意{ int r=b-l+1; for(int i=a;i<=r;++i) { if(cnt[i+l-1]-cnt[i-1]>=k) continue; else return 0; } return 1; } int erfen(int a,int b,int k){ int L=1,R=b-a+1,mid; while(L<=R) { mid=(L+R)/2; if(check(a,b,k,mid)) R=mid-1; else L=mid+1; } return L; }int main(){ int a,b,k; dabiao(); while(scanf("%d%d%d",&a,&b,&k)!=EOF) { if(!check(a,b,k,b-a+1)) printf("-1\n");//如果最大的范围里都没有k个素数,说明不存在l值,输出-1 else { printf("%d\n",erfen(a,b,k)); } } return 0;}
- Primes on Interval(素数打表+二分)
- CodeForces - 237C Primes on Interval (素数打表&二分)
- Codeforces 237C:Primes on Interval(素数打表+二分)
- Primes on Interval 【打表+二分】
- CodeForce 237C Primes on Interval(二分+ 素数筛法)
- cf273C. Primes on Interval【二分】
- Codeforces 237C Primes on Interval(素数统计)
- [CodeForces 273C] 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】+ 二分
- CodeForces - 237C Primes on Interval 【二分】
- 【Codeforcdes 237C. Primes on Interval】+ 二分
- HDU 2161 Primes(素数打表)
- Primes on Interval
- 装了三天系统和VS
- Java IO流之规律总结
- javascript移动端手机事件,禁止页面滑动
- Linux kill, killall, kill -9
- 服务器同时启动两个tomcat
- Primes on Interval(素数打表+二分)
- Java Socket 通信 (四)
- 洛谷 P1034 矩形覆盖
- pcb 阻抗匹配
- Oracle 与Mysql区别
- Android开发体系--Activity和Fragment的生命周期
- 如何设置CentOS为中文显示
- 正则表达式学习笔记
- RunLoop已入门?不来应用一下?