一本通1619【例 1】Prime Distance
1619: 【例 1】Prime Distance
题目描述
原题来自:Waterloo local,题面详见 POJ 2689
给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。
输入格式
多组数据。每行两个数 L,R。
输出格式
详见输出样例。
样例
样例输入
2 17
14 17
样例输出
2,3 are closest, 7,11 are most distant.
There are no adjacent primes.
数据范围与提示
对于全部数据 1≤L<R<231,R−L≤106。
sol:不会算复杂度,总之怎么暴力都能过
先筛出1~500000的质数,在 l~r 中暴力去掉合数(真的非常非常非常非常非常非常暴力)
for(i=;i<=*Prim&&Prim[i]<=r;i++)
{
int aa=(l-)/Prim[i]+;
aa+=((aa==)?():());
int bb=r/Prim[i];
for(j=aa;j<=bb;j++)
{
Bo[j*Prim[i]-l+]|=;
}
}
然后尴尬的过了
Ps:注意如果 l =1 的话要把 l 变成 2,因为 1 不是质数也筛不掉,不直接去掉会当成答案记录
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=;
bool f=;
char ch=' ';
while(!isdigit(ch))
{
f|=(ch=='-');
ch=getchar();
}
while(isdigit(ch))
{
s=(s<<)+(s<<)+(ch^);
ch=getchar();
}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<)
{
putchar('-');
x=-x;
}
if(x<)
{
putchar(x+'');
return;
}
write(x/);
putchar((x%)+'');
return;
}
inline void writeln(ll x)
{
write(x);
putchar('\n');
return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) writeln(x)
const int N=;
int Prim[N];
bool Bo[N];
bool Used[N];
inline void Pre_Prime()
{
int i,j;
for(i=;i<=;i++)
{
if(!Bo[i])
{
Prim[++*Prim]=i;
}
for(j=;j<=*Prim&&Prim[j]*i<=;j++)
{
Bo[Prim[j]*i]=;
if(i%Prim[j]==) break;
}
}
}
int Num[N];
int main()
{
int i,j,l,r;
Pre_Prime();
while(~scanf("%d%d",&l,&r))
{
l+=(l==)?():();
*Num=;
memset(Bo,,sizeof Bo);
for(i=;i<=*Prim&&Prim[i]<=r;i++)
{
int aa=(l-)/Prim[i]+;
aa+=((aa==)?():());
int bb=r/Prim[i];
for(j=aa;j<=bb;j++)
{
Bo[j*Prim[i]-l+]|=;
}
}
for(i=;i<=r-l+;i++) if(!Bo[i])
{
// printf("i=%d\n",i);
Num[++*Num]=i+l-;
}
if(*Num<)
{
puts("There are no adjacent primes.");
}
else
{
int O1=,O2=;
for(i=;i<*Num;i++)
{
if(Num[i+]-Num[i]<Num[O1+]-Num[O1]) O1=i;
if(Num[i+]-Num[i]>Num[O2+]-Num[O2]) O2=i;
}
printf("%d,%d are closest, %d,%d are most distant.",Num[O1],Num[O1+],Num[O2],Num[O2+]);
putchar('\n');
}
}
return ;
}
/*
input
2 17
14 17
output
2,3 are closest, 7,11 are most distant.
There are no adjacent primes.
*/
一本通1619【例 1】Prime Distance的更多相关文章
- 数论 - 素数的运用 --- poj 2689 : Prime Distance
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12512 Accepted: 3340 D ...
- UVA 10140 - Prime Distance(数论)
10140 - Prime Distance 题目链接 题意:求[l,r]区间内近期和最远的素数对. 思路:素数打表,打到sqrt(Max)就可以,然后利用大的表去筛素数.因为[l, r]最多100W ...
- poj 2689 Prime Distance(大区间素数)
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...
- [POJ268] Prime Distance(素数筛)
/* * 二次筛素数 * POJ268----Prime Distance(数论,素数筛) */ #include<cstdio> #include<vector> using ...
- POJ2689 Prime Distance(数论:素数筛选模板)
题目链接:传送门 题目: Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Des ...
- POJ-2689 Prime Distance (两重筛素数,区间平移)
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13961 Accepted: 3725 D ...
- UVA10140 Prime Distance
UVA10140 Prime Distance 给定两个整数L,R(1<=L<=R<=2^{31},R-L<=10^6)L,R(1<=L<=R<=231,R− ...
- ZOJ 1842 Prime Distance(素数筛选法2次使用)
Prime Distance Time Limit: 2 Seconds Memory Limit: 65536 KB The branch of mathematics called nu ...
- 解题报告:poj2689 Prime Distance
2017-10-03 11:29:20 writer:pprp 来源:kuangbin模板 从已经筛选好的素数中筛选出规定区间的素数 /* *prime DIstance *给出一个区间[L,U],找 ...
随机推荐
- lesson 8:小程序
程序源代码: //20163683 蔡金阳 信1605-3 import java.io.*; import java.util.Scanner; public class kaoshi { publ ...
- JAVA中map的分类和各自的特性
java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMap Map不允许键重复,但允许值重 ...
- eclipse 如何引入本地dtd
一.首先修改xml的打开方式为:XML editor 1.菜单:Window -> Preferences ->General -> Editors -> File Asso ...
- python多版本共存问题(以2.7和3.5系列版本为例)
1.0 下载Python2.7x和Python3.5x版本 2.0 安装Python 3.0 配置环境变量,分别添加至path路径 4.0 只修改Python27文件中的.exe文件(这样系统默认为P ...
- [Spark][Python]Wordcount 例子
[training@localhost ~]$ hdfs dfs -cat cats.txt The cat on the matThe aardvark sat on the sofa[traini ...
- Python代码转c#部分参考样例
最近在做一部分Pyhton代码转c#代码的工作,以下案例亲自都测试过,现整理出来希望对有帮助的同学提供参考: Python | C# *:first-child{margin-top:0 !impor ...
- Reactjs-JQuery-Omi-Extjs-Angularjs对比
写在前面 前端越来越混乱了,当然也可以美其名曰:繁荣. 当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? 那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所适从 ...
- C#_委托的使用
C#基础---委托的使用 一:什么是委托 委托是一种定义方法签名的类型当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联.您可以通过委托实例调用方法.委托是一个引用类型,所以它具 ...
- Windows10 家庭版 Docker的安装
Docker的安装 1.简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全 ...
- Nginx的location配置规则梳理
Nginx几乎是当下绝大多数公司在用的web应用服务,熟悉Nginx的配置,对于我们日常的运维工作是至关重要的,下面就Nginx的location配置进行梳理: 1)location匹配的是nginx ...