CF 237C (质数区间)
来源:互联网 发布:入门级显示器知乎 编辑:程序博客网 时间:2024/04/29 20:40
给定区间[a,b] 求l的最小值使[a,b]中任意长度为l的一段包含至少k个Prime
二分l
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<functional>#include<iostream>using namespace std;#define MAXN (1000000+10)int a[MAXN],tot=0,x,y,k;bool b[MAXN]={0};void work(){b[1]=1;for (int i=2;i<=y;i++){if (!b[i]){tot++;a[tot]=i;}for (int j=1;j<=tot;j++){if (a[j]*i>y) break;b[a[j]*i]=1;if (!i%a[j]) break;}}}bool is_ok(int l){int tot=0;for (int i=x;i<=x+l-1;i++) if (!b[i]) tot++;if (tot<k) return false;for (int j=x+l;j<=y;j++){tot=tot+(!b[j])-(!b[j-l]);if (tot<k) return false;}return true;}int main(){scanf("%d%d%d",&x,&y,&k);work();int l=k,r=y-x+1;if (l>r||!is_ok(r)) {printf("-1\n");return 0;}for (int i=1;i<=60;i++){if (l==r) break;int m=(l+r)>>1;//if (r-l==1) m++;if (is_ok(m)) r=m;else l=m+1;}printf("%d\n",l);//while (1);return 0;}
- CF 237C (质数区间)
- CF 52C Circular RMQ(区间更新,区间询问)
- CF#52 C Circular RMQ (线段树区间更新)
- CF 467C - George and Job (简单区间DP)
- 区间质数
- 区间质数
- CF 279C Ladder(区间问题)
- 打印某一区间的素数(质数)
- cf 46-d (模拟区间覆盖)
- 1134 -- 区间质数统计
- 1311:区间质数统计
- CF Div211 (C)
- 求一个区间内所有的质数(C++实现)
- 素数统计 平移区间筛质数(1e9)
- 数论专题 区间质数数量
- POJ 2689 区间筛选质数
- 洛谷 p1865 区间质数个数
- CF 174(div2) C
- origin 8 中输入希腊字母
- 多线程的“并发”和“并行”区别
- hdu 3460 Ancient Printer
- CF 237A (Cash)
- Booki 生成pdf文件时遇到的404错误
- CF 237C (质数区间)
- AE CS4安装后 147 20错误的解决方法
- Facebook面试题,从数组中删除这个指定的值的所有出现
- 对九个超级程序员的采访
- Git日志格式、颜色设置
- Liferay Message Bus
- Java中Map的便利方法
- 一些重要的算法
- 简单游戏场景用户模拟