Educational Codeforces Round 139 (Rated for Div. 2) D. Lucky Chains

news2024/10/7 4:29:50

翻译:

让我们命名一对正整数(𝑥,𝑦),幸运的是它们的最大公约数等于1 (gcd(𝑥,𝑦)=1)。

让我们定义一个链(𝑥𝑦)引起的一系列双(𝑥𝑦),(𝑥+ 1,𝑦+ 1)(𝑥+ 2,𝑦+ 2),……(𝑥+𝑘𝑦+𝑘)对于一些整数𝑘≥0。链的长度是由它组成的对的数量,或(𝑘+1)。

如果链上的所有对都是幸运的,我们就把这个链命名为幸运链。

您将得到𝑛对(𝑥𝑖,𝑦𝑖)。计算每一对由这对引出的最长幸运链的长度。注意,如果(𝑥𝑖,𝑦𝑖)本身不是幸运的,链的长度将为0。

输入
第一行包含一个整数𝑛(1≤𝑛≤106)-配对的数量。

接下来的𝑛行包含𝑛对——每行一个。𝑖-th行包含两个整数𝑥𝑖和𝑦𝑖(1≤𝑥𝑖<𝑦𝑖≤107)—对应的一对整数。

输出
打印𝑛整数,其中𝑖-th整数是由(𝑥𝑖,𝑦𝑖)或−1(如果链可以无限长)诱导的最长幸运链的长度。

例子
inputCopy
4
5 15
13 37
8 9
10009 20000
outputCopy
0
1
-1
79
请注意
在第一个测试用例中,gcd(5,15)=5>1,所以它已经不是幸运的,所以幸运链的长度是0。

在第二个测试案例中,gcd(13+1,37+1)=gcd(14,38)=2。所以,幸运链由一对(13,37)组成。 

思路:0 1 -1,这三种情况都可以直接判断掉。所以我们直接看后边的,最近总是看错题,看错样例,这场看这道题的时候已经没多少时间了,稍微想了下,然后糊了下代码。没过去,过去就不正常了。 b>a时,gcd(a,b)=gcd(a,b-a),为什么可以这样写呢?

大概证明过程时这样,写的有点乱( 惨不忍睹,所以我们可以得到gcd(a+x,b+x)==gcd(a+x,b-a)。

这时候我们就发现了,b-a是一个定植,然后a不断+x,我们就可以来分解枚举 b-a的质因子,来每次看a+x到达其倍数,需要加上的值,然后取最小即可。(需要注意优化,代码很容易T掉wwwww

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}
bool vis[10000005];
vector<int>prime;
void get_prime(int x){
    for (int i =2; i<=x; i++) {
        if (!vis[i]) {
            prime.push_back(i);}
            for (int j=0; j<prime.size()&&prime[j]*i<=x; j++) {
                vis[prime[j]*i]=true;
                if (i%prime[j]==0) {
                    break;
                }
            }
    }
}

int x,y;
void solv(){
    cin>>x>>y;
    if (x>y) {
        swap(x, y);
    }
    
    if (gcd(x, y)!=1) {
        printf("0\n");return;
    }
    if (x%2==1&&y%2==1) {
        printf("1\n");return;
    }
    if (x+1==y) {
        printf("-1\n");return;
    }
    int kl=y-x;
    int an=1e7+5;
    for (int i =0; i<prime.size()&&prime[i]*prime[i]<=kl; i++) {
        
        bool bh=false;
        while (kl%prime[i]==0) {
            kl/=prime[i];
            bh=true;
        }
        if (bh) {
            an=min(an,(x/prime[i]+1)*prime[i]-x);
        }
        if (kl==1) {
            break;
        }
    }
    if (kl>1) {
        an=min(an,(x/kl+1)*kl-x);
    }
    printf("%d\n",an);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    get_prime(3300);
    while (t--) {
        solv();
    }
    return 0;
}
 

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

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

相关文章

Vue中对获取数据、返回数据进行处理的wode总结

&#x1f4ad;&#x1f4ad; ✨&#xff1a;Vue中对获取数据、返回数据进行处理的总结   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 也许&#xff0c;不负光阴就是最好的努力&#xff0c;而努力就是最好的自己。&#x1f49c;&#x1f49c;   &#x1f3…

Mybatis:MyBatis的分页插件(11)

Mybaits笔记框架&#xff1a;https://blog.csdn.net/qq_43751200/article/details/128154837 Mybatis中文官方文档&#xff1a; https://mybatis.org/mybatis-3/zh/index.html 分页插件1. 分页插件使用步骤2. 分页插件的使用2.1: 开启分页功能2.2: 分页相关数据2.3: 常用数据1.…

在小公司干测试5年,如今终于熬出头了,入职美团涨薪14K

你的努力&#xff0c;终将成就无可替代的自己&#xff0c;本科毕业后就一直从事软件测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事功能测试的工作&#xff0c;我朋友看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要…

TongWeb7微服务适配方案

先介绍一下我们微服务项目的部署情况&#xff1a; 之前使用的是内置的Tomcat容器部署方式&#xff0c;运行项目使用的 java -jar 项目文件 方式&#xff0c;然后使用k8sdocker容器化部署。 还没了解TongWeb部署的同学们&#xff0c;可以看看我前面写的几个关于TongWeb本地部…

【有营养的算法笔记】巧解蛇形矩阵

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 ✉️分类专栏&#xff1a;题解 文章目录一、题目描述二、思路讲解三、代码实现一、题目描…

DevExpress ASP.NET and Blazor图表编制

DevExpress ASP.NET and Blazor图表编制 .NET 6现在是受支持的最低框架版本-此版本需要.NET 6和Microsoft Visual Studio 2022(v17.0)或更高版本。 图表编制 范围条形图-最小条形图大小-您现在可以使用新的minBarSize属性为范围条形图中显示的条形图指定最小大小。 数据可视化组…

RabbitMQ如何保证消息的可靠性

文章目录可靠性分析可靠性方案可靠性实现确认Exchange接收到消息确认Queue接收到消息保证Queue及其数据持久化保证消费者的正常消费重复消费问题消息丢失问题可靠性分析 RabbitMQ如何保证消息的可靠&#xff1f;如RabbitMQ基础概念中的架构模型 可以看到一条消息的传递过程&a…

还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅~

我们平时开发项目的时候&#xff0c;经常会需要远程调用下其他服务提供的接口&#xff0c;于是我们会使用一些HTTP工具类比如Hutool提供的HttpUtil。前不久SpringBoot 3.0发布了&#xff0c;出了一个Http Interface的新特性&#xff0c;它允许我们使用声明式服务调用的方式来调…

PreScan快速入门到精通第四十讲目标边界传感器

边界矩形传感器提供了关于传感器可检测物体的边界矩形的信息,并作为对摄像机输入的边界矩形算法的参考。一个例子是行人识别算法,该算法用于检测夜间、雾、雨或雪等恶劣照明条件下的行人。输出的检测到的边界矩形是按距离排序的--最近的在前。 注意:边界矩形传感器不检测(或…

Qt扫盲-QDoubleSpinBox理论总结

QDoubleSpinBox理论总结1. 简述2. 调值与值转换3. 信号4. 修饰&外观1. 简述 QDoubleSpinBox 主要是对于浮点数据的输入进行便捷的封装。QDoubleSpinBox和QSpinBox的使用基本一致&#xff0c;只是有些控制有些不同嘛。比如对于浮点数的小数点精度位数的控制啦。 QDoubleSpi…

第五章. 可视化数据分析图表—常用图表的绘制4—箱形图,3D图表

第五章. 可视化数据分析图 5.3 常用图表的绘制4—箱形图&#xff0c;3D图表 本节主要介绍常用图表的绘制&#xff0c;主要包括箱形图&#xff0c;3D柱形图&#xff0c;3D曲面图。 1.箱形图&#xff08;matplotlib.pyplot.boxplot&#xff09; 箱形图又称箱线图、盒须图或盒式…

你还在为 “动态规划” 发愁吗?看完本秘籍,带你斩杀这类题~

目录 前言 一、动态规划——解题思路 二、动态规划——模板以及题目 2.1、Fibonacci 2.2、字符串分割(Word Break) 2.3、三角矩阵(Triangle&#xff09; 2.4、路径总数(Unique Paths&#xff09; 2.5、最小路径和(Minimum Path Sum) 2.6、背包问题 2.7、回文串分割(Pa…

第08讲:使用脚手架创建vue项目

一、安装NodeJS 二、配置环境变量 2.1、软件安装完成之后配置npm的环境变量 第1步&#xff1a;获取npm安装位置 使用管理员身份打开CMD&#xff0c;用如下命令获取npm的安装位置&#xff1a; npm config list第2步&#xff1a;配置环境变量 将以上获取的路径保存到path变…

flask请求与响应、session执行流程

目录 请求对象 响应对象 session的使用和原理 闪现(flash) 请求扩展 蓝图 请求对象 请求对象request是全局的&#xff0c;需要导入这个全局的request&#xff0c;在哪个视图函数中就是当次的request对象 请求数据&#xff1a; request.method # 获取提交的方法 …

文件包含漏洞简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是文件包含漏洞简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

一些好玩的js小作品

今天小编给大家带来了一些很实用的js小作品&#xff0c;下面请一看究竟。 1、计算详细年龄工具js脚本 2、检测是否安装Flash插件及版本号js脚本 3、无法查看源码的页面 4、面积换算js脚本 5、体积和容积换算js脚本 6、长度换算js脚本 7、重量换算js脚本 8、只能输入汉字…

记一些女装数据分析

文章目录服装维度女装生命周期门店维度常见度量值衍生指标服装维度 尺码&#xff1a;XS、S、M、L、XL颜色&#xff1a;黑、红、蓝、白……一级分类&#xff1a;上半身、下半身、全身季节&#xff1a;春、夏、秋、冬价格类型&#xff1a;正价、特价、折扣价、降价、优惠券…价格…

Android自定义ViewGroup布局进阶,完整的九宫格实现

自定义ViewGroup九宫格 前言 在之前的文章我们复习了 ViewGroup 的测量与布局&#xff0c;那么我们这一篇效果就可以在之前的基础上实现一个灵活的九宫格布局。 那么一个九宫格的 ViewGroup 如何定义&#xff0c;我们分解为如下的几个步骤来实现&#xff1a; 先计算与测量九…

【Linux学习】进程信号

文章目录前言一、信号初识1. 信号的概念2. Linux中的普通信号3. 信号的处理二、信号产生1. 终端按键产生信号2. 系统调用发送信号2.1 kill函数2.2 raise函数2.3 abort函数3. 由软件条件产生信号3.1 SIGPIPE信号3.2 alarm函数4. 由硬件异常产生信号三、信号阻塞1. 信号阻塞即其他…

[前端面试题]flex上下布局

[前端面试题]flex上下布局 [万字长文]一文教你彻底搞懂flex布局 [CSS]一些flex的应用场景 页面中有两个元素。元素bottom固定在底部&#xff0c;靠内容来撑开&#xff1b;而元素top在上边&#xff0c;高度自适应&#xff0c;自动铺满除bottom剩下的空间&#xff0c;且top内容…