D. Lucky Chains(GCD+素数筛)

news2024/11/24 12:42:30

 

input:

4
5 15
13 37
8 9
10009 20000

output:

0
1
-1
79

题目大意:

如果一个数对(x,y)是幸运的,当且仅当gcd(x,y)=1,一条链可以由以下规律的数对组成,(x,y),(x+1,y+1),(x+2,y+2)……(x+k,y+k),如果说一条链是幸运的,当且仅当这条链上的每一个数对都是幸运的,每次给出一个数对,问这个以这个数对为一条链的起点,所能构成的幸运链的长度最长是多少?如果说这条链的长度是无穷的,输出-1,否则输出链的长度。

解题思路:

gcd(a,b)=gcd(a,a-b),(a>b),至于为什么,可参考以下网址证明gcd(a,b)=gcd(a-b,b) - Dance With Automation - 博客园 (cnblogs.com)

gcd(a+k,b+k)=gcd(a+k,b-a)=1

所以我们最终的任务就是找到一个(b-a)的因子k,使得k-a%k最小,由于a,b都是固定的,所以我们我们每次找到b-a的最小质因子p(该过程可以通过筛素数的过程得到),然后用p-a%p去更新答案即可,当一个因子用完以后,把这个因子从(b-a)中除尽,然后再考虑下一个因子。

上代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e7+10;
int maxn=1e7+10;
//p[i]表示i的最小质因子,primes[i]表示第i个质数 
int p[N],primes[N],f[N];
int cnt=0;
void getprimes()
{
	primes[1]=1;
	for(int i=2;i<N;i++)
	{
		if(!f[i])	
		primes[++cnt]=i,p[i]=i;//如果i在之前未被标记,那i就一定是质数 
	    //s[i]记录的是i这个数字的最小质因子 
		for(int j=1;j<=cnt;j++)
		{
			if(i*primes[j]>=N)//如果当前得到的数字超出了范围直接break 
			break;
			f[i*primes[j]]=1;//素数的倍数一定不是素数,可以直接标记 
			p[i*primes[j]]=primes[j];
			if(i%primes[j]==0)//这句话是欧拉筛的精髓,如果i能被p[j]整除,那么在之后的i*p[j+1]....都会被p[j]*一个数所标记
//	现在来证明一下:当i是p[j]的整数倍的时候,记m=i/p[j],则i*p[j+1]=m*p[j+1]*p[j],说明i*p[j+1]是p[j]的倍数吗,不需要再进行标记 (在之后会被 prime[j] *某个数(m*prime[j+1])标记),
//对于 prime[j+2] 及之后的素数同理,直接跳出循环,这样就避免了重复标记。		 
			break;
		}
	}
//	p[0] = p[1] = -1;
//    for (int i = 2; i < maxn; i++)
//    {
//        if (!p[i])
//            primes[++cnt] = i, p[i] = i;
//        for (int j = 1; j <= cnt && primes[j] * i < maxn; j++)
//        {
//            p[i * primes[j]] = primes[j];
//            if (i % primes[j] == 0)
//                break;
//        }
//    }

}
int main()
{
	//一定要加关闭流同步这两行代码,否则必T在第二个点上 
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	int t;
	getprimes();
	cin>>t;
	while(t--)
	{
		int x,y;
		cin>>x>>y;
		if(abs(x-y)==1)//如果说两个数字相差1,那么这两个数字永远互质 
		{
			cout<<"-1"<<endl;
			continue;
		}
		if(__gcd(x,y)!=1)
		{
			cout<<"0"<<endl;
			continue;
		}
		int c=abs(x-y);
		int ans=0x3f3f3f3f;
		while(c>1)
		{
			ans=min(ans,p[c]-x%p[c]);
			int temp=p[c];
			while(c%temp==0)
			c/=temp;
		}
		cout<<ans<<endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非零基础自学Golang 第16章 正则表达式 16.3 regexp包 16.4 小结 16.5 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第16章 正则表达式16.3 regexp包16.3.1 MatchString函数16.3.2 FindStringIndex函数16.3.3 ReplaceAllString函数16.4 小结16.5 知识拓展16.5.1 常用正则表达式参考第16章 正则表达式 16.3 regexp包 Go在处理正则表达式时主要使…

拆箱phper最适合入门的go框架beego

beego beego 是一个快速开发 Go 应用的 HTTP 框架&#xff0c;他可以用来快速开发 API、Web 及后端服务等各种应用&#xff0c;是一个 RESTful 的框架&#xff0c;主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架&#xff0c;但是结合了 Go 本身的一些特性&#xff…

路由信息协议RIP(计算机网络)

目录 路由选择协议 路由信息协议 RIP中的距离 RIP协议的具体算法 RIP协议路由表的更新 例题 距离向量算法 RIP 协议的要点 路由选择协议 路由器之间要互相不断交换网络拓扑和状态信息&#xff0c;根据信息求出到所有目的网络的最佳路由 用于交换路由信息&#xff0c;进…

软件测试实战教程系列—接口测试用例和报告模板|收藏版

文章目录 接口测试为什么会如此重要呢&#xff1f; 接口测试的必要性 获取接口相关信息 接口测试的流程 接口文档 是接口测试的参照&#xff0c;至少包括&#xff1a; 接口测试用例设计 接口测试用例模板 &#xff08;可根据项目实际情况设计增减&#xff09; 接口测试…

前端基础_组合多个图形

组合多个图形 在前面的实例中&#xff0c;我们看到使用Canvas API可以将一个图形重叠绘制在另一个图形上面&#xff0c;但图形中能够被看到的部分完全取决于以哪种方式进行组合&#xff0c;这时需要使用到Canvas API的图形组合技术。在HTML5中&#xff0c;只要用图形上下文对象…

模数转换器(ADC)

目录 一、简介&#xff1a; 二、主要特征 三、校准&#xff08;CLB&#xff09; 四、ADC时钟 五、ADCON开关 六、规则组和注入组 七、转换模式 八、注入通道管理 九、可编程的采样时间 十、外部触发 十一、温度传感器和内部参考电压 一、简介&#xff1a; 12位ADC是…

CSS -- 使用纯CSS实现旋转木马相册的效果

如果对3D转换不熟悉可以参考&#xff1a;CSS – CSS3中3D转换相关属性讲解&#xff08;translate3d&#xff0c;rotate3d&#xff0c;perspective&#xff0c;transform-style&#xff09; 如果对动画不熟悉可以参考&#xff1a;CSS – CSS3基础动画讲解 旋转木马图片相册 <…

centos 7安装mysql

一.安装之前检测系统是否有自带的MySQL(若是没有安装直接忽略该步骤) rpm -qa | grep mysql #检查是否安装过MySQL rpm -qa | grep mariadb #检查是否存在 mariadb 数据库&#xff08;内置的MySQL数据库&#xff09;&#xff0c;有则强制删除 rpm -e --nodeps mariadb-libs-…

信而泰BGP Flow Spec防攻击测试解决方案

随着互联网行业的迅猛发展&#xff0c;越来越多的业务都从线下走到了线上。互联网在给大家生活带来便利的同时也面临着防护自身安全的各种挑战。 DoS/DDoS攻击是对网络安全的重大威胁&#xff0c;攻击者通过多个控制端控制成千上万的攻击设备对同一个目的地址、网段或服务器同…

【触摸屏功能测试】昆仑通态MCGS——物联网功能测试

测试触摸屏&#xff1a; 型号&#xff1a;TPC7022Ni 测试内容&#xff1a;物联网产品设备的无线通信和远程调试功能 物联网 1、功能概述 物联网产品设备可通过无线通讯的方式&#xff0c;进行远程调试和操作。物联网产品设备支持以下功能&#xff1a; l 4G和WiFi通信 l 远…

m基于kmeans和SVM的网络入侵数据分类算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 首先计算整个数据集合的平均值点&#xff0c;作为第一个初始聚类中心C1&#xff1b; 然后分别计算所有对象到C1的欧式距离d&#xff0c;并且计算每个对象在半径R的范围内包含的对象个数W。 此时计…

非零基础自学Golang 第17章 HTTP编程(上) 17.2 HTTP客户端 17.2.3 发起GET请求

非零基础自学Golang 文章目录非零基础自学Golang第17章 HTTP编程(上)17.2 HTTP客户端17.2.3 发起GET请求第17章 HTTP编程(上) 17.2 HTTP客户端 17.2.3 发起GET请求 从现在开始我们将会学习如何使用Go语言模拟浏览器发起HTTP请求。 发起请求前需要创建一个请求对象&#xff…

WINDOWS下安装ORACLE客户端报错:无法访问临时位置

WINDOWS2016&#xff08;虚拟机&#xff09;安装oracle11g碰到“无法访问临时位置”的问题&#xff0c;详细信息如下&#xff1a; INS-30131] 执行安装程序验证所需的初始设置失败。 原因 - 无法访问临时位置。 操作 - 请确保当前用户具有访问临时位置所需的权限。 附加信息: …

【DETR目标检测】关键词:Decoder。Encoder。query向量。注意力机制。

声明:仅学习使用~ 目录 1、目标检测的基本思想2、整体网络架构3、位置信息初始化query向量4、注意力机制的作用方法5、训练过程的策略1、目标检测的基本思想 2015年,faster-rcnn; 2016年,YOLO; NMS:非极大值抑制; 2、整体网络架构 backbone 即先通过CNN 拿到每个pat…

Transformers18~ Diffusion

还是Transformers,来自 UC 伯克利的 William Peebles 以及纽约大学的谢赛宁撰文揭秘扩散模型中架构选择的意义&#xff0c;并为未来的生成模型研究提供经验基线。 近几年&#xff0c;在 Transformer 的推动下&#xff0c;机器学习正在经历复兴。过去五年中&#xff0c;用于自然…

【概述】请求报文在网络各层中的具体传输

请求报文在网络各层中的具体传输电脑中之间的通信&#xff0c;可以看成为两个应用进程之间的通信&#xff1b;一个请求从客户端到服务器端&#xff0c;通常需要经过三个阶段&#xff1a; 客户端路由转发阶段服务器端 客户端请求服务端 请求在客户端中每一层的具体传输数据 应…

LeetCode 322 周赛

2490. 回环句 句子 是由单个空格分隔的一组单词&#xff0c;且不含前导或尾随空格。 例如&#xff0c;"Hello World"、"HELLO"、"hello world hello world" 都是符合要求的句子。 单词 仅 由大写和小写英文字母组成。且大写和小写字母会视作不…

【Call for papers】2023年CCF-A类会议截稿日期(实时更新)

会议简称会议名称类别截稿日期链接S&P-2023IEEE Symposium on Security and Privacy网络与信息安全2022年12月2日Call for papersUSENIX ATC-2023USENIX Annul Technical Conference计算机体系结构/并行与分布计算/存储系统2023年1月12日Call for papersIJCAI-2023Internat…

H5后台读写CAD文件

说明 后台提供mxconvert.js程序&#xff0c;该程序使用JS编程&#xff0c;可以在后台实现读写CAD文件、读取CAD图纸数据等操作。 如何使用mxconvert.js转CAD图纸到梦想格式 1.Windows调用&#xff0c;进入 Bin\Release目录&#xff0c;命令行调用 node.exe mxconvert.js 1.d…

【推荐】动力锂电池及BMS系统介绍资料合集

锂动力电池是20世纪开发成功的新型高能电池。这种电池的负极是金属锂&#xff0c;正极用MnO2&#xff0c;SOCL2&#xff0c;(CFx)n等。70年代进入实用化。因其具有能量高、电池电压高、工作温度范围宽、贮存寿命长等优点&#xff0c;已广泛应用于军事和民用小型电器中&#xff…