【题解】poj2689(LibreOJ10197) 线性筛

2023-10-31

题目链接
筛出2到sqrt(u)的所有质数,再标记[l,u]中是质数p倍数的数,最后枚举相邻质数
部分代码实现参考了大佬题解

题目描述

给定两个整数 L , R L,R L,R,求闭区间 [ L , R ] [L,R] [L,R] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。

输入格式

多组数据。每行两个数 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 &lt; R &lt; 2 31 , R − L ≤ 1 0 6 1\le L\lt R\lt 2^{31},R-L\le 10^6 1L<R<231,RL106

#include<cstdio>
#include<cstring>
#include<climits>
#include<cmath>
const int N=5e4+10;
const int M=1e6+10;
int l,u;
bool iscomp[N+10];
int vis[M];
int prime[N+10],p;
void primetable()//之前筛小了…… 
{
	for(int i=2;i<=(int)sqrt(N+0.5);i++)
	    if(!iscomp[i])
	    {
		    for(int j=i*i;j<N;j+=i)
		        iscomp[j]=1;
	    }
	for(int i=2;i<N;i++)if(!iscomp[i])prime[p++]=i;
}
int maxn,minn;
int c1,c2,d1,d2;
int main()
{
	//freopen("in.txt","r",stdin);
	primetable();
	while(~scanf("%d%d",&l,&u))
	{
		maxn=-1,minn=1e9;
		int tmp=-1;
		if(l==1)l=2;
		memset(vis,0,sizeof(vis));//好久没写多组数据又忘了… 
		for(int i=0;i<p;i++)
		{
			int a=(l-1)/prime[i]+1,b=u/prime[i];
			for(int j=a;j<=b;j++)
		        if(j>1)vis[j*prime[i]-l]=1;//注意这个-l,记录偏移量
		}
	    for(int i=0;i<=u-l;i++)
	    {
	    	if(!vis[i])
			{
				if(tmp==-1)//之前把tmp初值赋的0,i=0时并没有刷新,于是出问题了 
	    	    {
	    		    tmp=i;continue;
			    }
			    if(maxn<i-tmp)maxn=i-tmp,d1=tmp+l,d2=i+l;
			    if(minn>i-tmp)minn=i-tmp,c1=tmp+l,c2=i+l;//还原
			    tmp=i;
			} 
		}
		if(maxn==-1)puts("There are no adjacent primes.");
		else printf("%d,%d are closest, %d,%d are most distant.\n",c1,c2,d1,d2);
	}
	return 0;
}

总结

这种解法好像挺爱考的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【题解】poj2689(LibreOJ10197) 线性筛 的相关文章

  • POJ 题目1105 S-Trees(二叉树模拟)

    S Trees Time Limit 1000MS Memory Limit 10000KTotal Submissions 1499 Accepted 807 Description A Strange Tree S tree over
  • POJ-2453

    As we known data stored in the computers is in binary form The problem we discuss now is about the positive integers and
  • POJ 1738

    There is an old stone game At the beginning of the game the player picks n 1 lt 61 n lt 61 50000 piles of stones in a li
  • POJ滑动窗口

    题目描述 现在有一堆数字共N个数字 xff08 N lt 61 10 6 xff09 xff0c 以及一个大小为k的窗口 现在这个从左边开始向右滑动 xff0c 每次滑动一个单位 xff0c 求出每次滑动后窗口中的最大值和最小值 例如 xf
  • POJ 3764--The xor-longest Path---DFS + Trie(最大异或值)

    POJ 3764 The xor longest Path Time Limit 2000MS Memory Limit 65536K Description In an edge weighted tree the xor length
  • POJ 2449 Remmarguts‘ Date---SPFA求评估函数 + A*最小堆BFS

    POJ 2449 Remmarguts Date Time Limit 4000MS Memory Limit 65536K Description Good man never makes girls wait or breaks an
  • POJ 3259 Wormholes(负权环路)

    题意 xff1a 农夫约翰农场里发现了很多虫洞 xff0c 他是个超级冒险迷 xff0c 想利用虫洞回到过去 xff0c 看再回来的时候能不能看到没有离开之前的自己 xff0c 农场里有N块地 xff0c M条路连接着两块地 xff0c W
  • POJ 题目1239 ||ZOJ 题目 1499 Increasing Sequences(正反两次DP)

    Increasing Sequences Time Limit 1000MS Memory Limit 10000KTotal Submissions 3025 Accepted 1147 Description Given a strin
  • poj 1131进制转换

    POJ 1131 Octal Fractions 任意进制之间小数的转换 给定一个八进制的小数题目要求你把它转换为十进制小数 xff0c 转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零 即后置零 我采用的方法是乘10然后
  • poj 1068 parencondings

    题目描述 xff1a 定义 S 为一个合法的括号字符串 S 可以用以下两种方式编码 xff1a 1 用一个整数数组 P 来表示 xff0c 其中元素 p i 是 S 中每个 39 39 前的 39 39 的个数 xff1b 2 用一个整数数
  • poj 2513 colored sticks

    代码 include lt iostream gt include lt stdio h gt using namespace std define MAX 27 define S 500003 struct Node int id Nod
  • 汉诺塔问题(Hanoi)-python递归实现

    描述 描述 一 汉诺塔问题 有三根杆子A B C A杆上有N个 N gt 1 穿孔圆盘 盘的尺寸由下到上依次变小 要求按下列规则将所有圆盘移至C杆 每次只能移动一个圆盘 大盘不能叠在小盘上面 提示 可将圆盘临时置于B杆 也可将从A杆移出的圆
  • poj 1742 Coins

    Problem poj org problem id 1742 Reference www cppblog com flyinghearts archive 2010 09 01 125555 html blog csdn net wang
  • POJ--2709:Painter (贪心)

    1 题目源地址 http poj org problem id 2709 2 解题思路 每个颜料盒可能有3 12种颜色 其中每种颜色50ml 任意三种颜色 假设每种颜色Xml 可以混合出Xml的灰色 现在给出所需颜色的种数N 给出N个值分别
  • POJ--1328:Radar Installation (贪心)

    1 题目源地址 http poj org problem id 1328 2 解题思路 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目 每个小岛对应x轴上的一个区间 在这个区间内的任何一个点放置雷达 则可以覆盖该小岛 区间范围的计算用 x
  • POJ 2479 Dual Core CPU|网络流|dinic模版

    问题描述 总时间限制 15000ms 单个测试点时间限制 5000ms 内存限制 65536kB 描述 As more and more computers are equipped with dual core CPU SetagLilb
  • POJ--1458:Common Subsequence (DP求最长公共子序列)

    1 题目源地址 http poj org problem id 1458 2 基本题意 给出两个序列 求出最长子序列的长度并输出 经典的动态规划求解 求最长公共子序列的经典DP解法代价为O mn 其中m和n分别为两个字符串的长度 具体实现如
  • poj 2155 Matrix

    Problem poj org problem id 2155 vjudge net contest 146952 problem A Meaning 一个 N N 的矩阵 A 初始时全部值为 0 有两种操作 1 C x1 y1 x2 y2
  • bzoj3309 DZY Loves Math

    题目链接 bzoj3309 题目大意 对于正整数n 定义f n 为n所含质因子的最大幂指数 给定正整数a b 求 ai 1 bj 1f gcd i j sum i 1 a sum j 1 b f gcd i j T lt 10000 1 l
  • poj1463

    1

随机推荐

  • pytorch中mm()函数的用法

    x x mm self w x与w相乘 注 x必须是tensor 才可以应用该方法 参考链接 https blog csdn net genous110 article details 87801605
  • Web应用防火墙--规则防护

    一 什么是Web应用防火墙 Web应用防火墙对网站 APP的业务流量安全及合规性保护 对业务流量的识别恶意特征提取 分析识别出恶意流量并进行处理 将正常安全的流量回源到业务服务器 保护网站核心业务和数据安全 京东云Web应用防火墙的产品架构
  • 深度学习C语言——结构体

    不起眼 前言 结构体 结构体的声明 结构体变量的定义和初始化 结构体大小计算 枚举 联合 总结 前言 自定义类型连续剧 结构体 结构是一些值的集合 这些值称为成员变量 结构的每个成员是不同类型的变量 为什么要有结构体 比如说 描述一个学生时
  • Learnning Dlib(五) Dlib face landmark detection

    官方例子 人脸模型68点绘制 非常非常慢 需要优化 下载模型 下载后放入lib 目录下 代码如下 interface ViewController shape predictor sp NSString imagePath void vie
  • Python Web Flask源码解读(三)——模板渲染过程

    关于我 编程界的一名小小程序猿 目前在一个创业团队任team lead 技术栈涉及Android Python Java和Go 这个也是我们团队的主要技术栈 Github github com hylinux1024 微信公众号 angry
  • 【数据分析】数据分析方法(二):逻辑树分析方法

    数据分析方法 二 逻辑树分析方法 逻辑树分析方法是把复杂问题拆解成若干个简单的子问题 然后像树枝那样逐步展开 1 工作计划分解 不管是在实际生活中还是工作中 我们经常会使用逻辑树分析方法来分析问题 比如 现在你想给自己做一个年度计划 但是要
  • 基石

    本文是Checkpoint系列非源码最后一篇文章 必会 关于SparkStreaming checkpoint那些事儿 flink超越Spark的Checkpoint机制 前面两篇 一篇是spark的driver的Checkpoint细节及
  • 工作中git遇到的问题

    一开始我提交代码总是提交到另一个同事的git里 代码 Windows PowerShell 版权所有 C Microsoft Corporation 保留所有权利 尝试新的跨平台 PowerShell https aka ms pscore
  • 使用springboot搭建swing桌面程序(二)

    概述 桌面应用是个人兴趣 但不是很擅长 这里接着上一篇的内容 上一篇主要是springboot jpa swing集成到一起 启动是否正常 这一篇主要是应用的具体实现 页面编写 基本的todo的添加 完成 展示 页面的布局 设计自己的组件
  • Element UI Table排序顺序错乱处理

    1 a b gt return a total money b total money a b gt 0表示a大于b a b 0表示a等于b a b lt 0表示a小于b
  • java面向对象简述

    1 面向对象编程的基本特征 java面向对象编程的三个基本特征是封装 继承和多态 这三个特征是面向对象编程更加灵活 高效 2 类和对象 在java中 所有的代码都必须放在类中 类是种模板 它确定了对象的属性和行为 对象是类的实例化 可以调用
  • 解决TypeError: string indices must be integers, not str

    遇到问题 ExtendValue area 1 info year 2014 a 12 b 3 c 5 trip country CN 在按照字典访问的时候 报错 TypeError string indices must be integ
  • ubuntu 16.04 gedit 配置

    ubuntu 16 04 gedit 配置 1 功能说明 说明 1 配置使用gedit调用python工具 调用终端显示python运行结果 2 配置使用gedit调用终端 显示shell运行结果 3 配置使用gedit编辑markdown
  • Java常见面试题(2)

    1 表单提交重复 怎么设置接口的幂等性 场景 当用户在下单的时候 他已经支付过了 再返回支付结果的时候 出现网络抖动的问题 出现了一些异常 那这个时候用户已经消费过了 如果用户在点击这个按钮 就会二次消费 这就是因为没有实现幂等性 解决 1
  • State Manager

    stateProvider工作的方式与Angular s v1 router相近 但是他更加注重状态 状态对应于应用程序中某个位置 整体的UI和导航A state corresponds to a place in the applicat
  • mybatis条件判断/ 动态sql

    1 if标签 单条件判断 判断完第一个条件 对下一个条件进行判断 看是否能满足条件 满足则执行
  • 开发中用到的数据库查询案例

    目录 1 查询过去12个月的数据 并统计每个月数据的数量 2 查询过去12个月的数据 并统计每个月数据的数量 如果某个月数据没有 也展示出为0 1 查询过去12个月的数据 并统计每个月数据的数量 select date format cas
  • Qt入门-界面多语言国际化的实现

    Qt为国际化的实现提供了简便的方法 下面使用Qt Linguist示例一个中文语言界面的生成 我使用以前的实例 http blog csdn net xgbing article details 7778856 它是一个英文界面 步骤如下
  • 什么场景该用 MongoDB

    摘要 前段时间 MongoDB源码团队 在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨 的技术话题 有近五千人关注了该话题讨论 很多人比较关心 MongoDB的适用场景 也有用户在话题里分享了自己的业务场景 这里就
  • 【题解】poj2689(LibreOJ10197) 线性筛

    题目链接 筛出2到sqrt u 的所有质数 再标记 l u 中是质数p倍数的数 最后枚举相邻质数 部分代码实现参考了大佬题解 题目描述 给定两个整数 L R L R L R 求闭区间 L