一本通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],找 ...
随机推荐
- java从命令行接受多个数字求和输出
一·设计思路 1.定义一个整型变量sum,用于接收和 2.利用循环将命令行数字求和 3.输出参数个数以及参数之和 二·流程图 三·程序源代码 public class JavaAppArguments ...
- Luogu4640 BJWC2008 王之财宝 容斥、Lucas
传送门 题意:有$N$种物品,其中$T$个物品有限定数量$B_i$,其他则没有限定.问从中取出不超过$M$个物品的方案数,对质数$P$取模.$N,M \leq 10^9 , T \leq 15 , P ...
- 搭建Zookeepeer源码工程
一.搭建ant环境 1.下载ant&将ant解压至安装目录 http://ant.apache.org/bindownload.cgi 2.配置环境变量 ANT_HOME:配置ant的安装目录 ...
- Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡
接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...
- 介绍HTTP协议的传输过程
1.HTTP是面向事物的应用层协议,它使用TCP连接进行可靠传输,服务器默认监听在80端口 2.服务流程 从协议执行过程来说,当浏览器要访问www服务器时,首先要对服务器进行域名解析(DNS协议).一 ...
- C#_根据银行卡卡号判断银行名称
/// <summary> /// 银行信息 /// </summary> public class BankInfo { #region 数组形式存储银行BIN号 /// & ...
- CentOS7下安装Docker-Compose操作记录
Docker-Compose是一个部署多个容器的简单但是非常必要的工具.安装Docker-Compose之前,请先安装 python-pip 一.安装 python-pip [root@workben ...
- 2017乌鲁木齐区域赛D题Fence Building-平面图的欧拉公式
这个题B站上面有这题很完整的分析和证明,你实在不懂,可以看看这个视频 https://www.bilibili.com/video/av19849697?share_medium=android&a ...
- Linux内核分析作业五
扒开系统调用的三层皮(下) 给MenuOS增加time和time-asm命令 步骤 rm menu -rf //强制删除 git clone http://github.com/menging/men ...
- Linux内核分析 第七周 可执行程序的装载
张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七 ...