[题解](区间质数筛)POJ_2689 Prime Distance
区间筛素数:先筛出1~sqrt(R)的素数,然后对于每个询问只要用这些素数筛掉区间内的合数即可。
几个细节:
1.特判和1有关的一些情况
2.每次减去L偏移量,数组只开区间大小
3.POJ无法使用万能头文件(需要火星救援(大雾
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int prime[];
bool ck[],tmp[];
int l,r,tot;
int main(){
for(int i=;i<=;i++){
if(!ck[i])prime[++tot]=i;
for(int j=;j<tot;j++){
if(i*prime[j]>)break;
ck[i*prime[j]]=;
if(i%prime[j]==)break;
}
}
while(scanf("%d%d",&l,&r)!=EOF){
if(l==)l=;//特判
memset(tmp,,sizeof(tmp));
for(int i=;i<=tot;i++){
int a=(l-)/prime[i]+;
int b=r/prime[i];
a=max(,a);
for(int j=a;j<=b;j++)
tmp[j*prime[i]-l]=;//减去l映射
}
int lst=-,minans=0x7fffffff,maxans=,xa,ya,xb,yb;
for(int i=;i<=r-l;i++){
if(!tmp[i]){
if(lst==-){lst=i;continue;}
if(maxans<i-lst)
maxans=i-lst,xa=lst+l,ya=i+l;
if(minans>i-lst)
minans=i-lst,xb=lst+l,yb=i+l;
lst=i;
}
}
if(maxans==)printf("There are no adjacent primes.\n");
else printf("%d,%d are closest, %d,%d are most distant.\n",xb,yb,xa,ya);
}
}
[题解](区间质数筛)POJ_2689 Prime Distance的更多相关文章
- 题解报告:poj 2689 Prime Distance(区间素数筛)
Description The branch of mathematics called number theory is about properties of numbers. One of th ...
- POJ-2689 Prime Distance (两重筛素数,区间平移)
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13961 Accepted: 3725 D ...
- poj 2689 Prime Distance(大区间素数)
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...
- 【题解】UVA10140 [Prime Distance]
[题解]UVA10140 Prime Distance 哈哈哈哈\(miller-rabbin\)水过去了哈哈哈 还能怎么办呢?\(miller-rabbin\)直接搞.枚举即可,还跑得飞快. 当然此 ...
- POJ-2689 Prime Distance,区间素数筛法
Prime Distance 只会埃氏筛法的弱鸡今天读了读挑战程序设计120页,明白了求小区间内素数的方 ...
- [POJ268] Prime Distance(素数筛)
/* * 二次筛素数 * POJ268----Prime Distance(数论,素数筛) */ #include<cstdio> #include<vector> using ...
- 洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]
题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...
- poj 2689 Prime Distance(区间筛选素数)
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9944 Accepted: 2677 De ...
- ZOJ 1842 Prime Distance(素数筛选法2次使用)
Prime Distance Time Limit: 2 Seconds Memory Limit: 65536 KB The branch of mathematics called nu ...
随机推荐
- Struts2中properties
- Intellij IDEA 修改代码后自动编译更新
Intellij IDEA 一些不为人知的技巧 问题描述: Intellij IDEA 调试修改时,改动页面和 java 文件后,无法立刻看到变化,需要手动重启服务. 问题原因: 在 IDEA tom ...
- [Vim 使用]vim 自动括号补全配置
打开Vim的配置文件,windows 上面的配置文件在vim 的安装目录下,_vimrc,使用记事本或vim打开 在下方加入如下代码 inoremap ( ()<ESC>i inorema ...
- java后台获取cookie里面值得方法
String admissionNo = ""; //得到所有的cookies Cookie[] cookies = this.getRequest().getCookies(); ...
- codeforces B. George and Round 解题报告
题目链接:http://codeforces.com/contest/387/problem/B 题目意思:给出1-n个问题,以及要满足是good rounde条件下这n个问题分别需要达到的compl ...
- Git 常用命令学习
本文转载自:https://buptldy.github.io/2016/03/02/2016-03-02-Git%20Cheat%20Sheet/ 文章 创建版本库 初始化一个Git仓库,使用git ...
- bzoj 2238 Mst——树链剖分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2238 一条非树边可以对一条链的树边产生影响.注意是边,所以把边下放到点上,只要跳 top 时 ...
- main.o: In function `__static_initialization_and_destruction_0′:
原因: gcc编译C++文件时,需要添加一选项:-lstdc++ 解决方法如下: 可以将gcc换成g++编译器编译. 如果坚持使用gcc的话,可以在gcc后面加上-lstdc++,即: gcc ...
- 1--redis3.0.5集群部署安装详细步骤
Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) ...
- libvirt监控