蓝桥杯每日一题:公约数(gcd)

news2025/1/20 14:54:14

题目描述:

给定两个正整数 a 和 b。

你需要回答 q 个询问。

每个询问给定两个整数 l,r,你需要找到最大的整数 x,满足:

  1. x 是 a和 b 的公约数。
  2. l≤x≤r。
输入格式

第一行包含两个整数 a,b。

第二行包含一个整数 q。

接下来 q 行,每行包含两个整数 l,r。

输出格式

每个询问输出一行答案,即满足条件的最大的 x�,如果询问无解,则输出 −1−1。

数据范围

前六个测试点满足 1≤a,b≤100,1≤q≤20。
所有测试点满足 1≤a,b≤10^9,1≤q≤10^4,1≤l≤r≤10^9。

输入样例:
9 27
3
1 5
10 11
9 11
输出样例:
3
-1
9

 解题思路:

设d为(a,b)的最大公约数,x为d所有约数,p为质约数;

有图可知 a,b质约数和x相同,x为d的约数,因此求出d的所以有约数再排序,找出l-r的最大值即可.

参考代码:

###暴力
```
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 1350;
int p[N];
int a,b,cnt;

int gcd(int a,int b)
{
    return b ? gcd(b,a%b) : a;
}

void solve(int a,int b)
{
    int d = gcd(a,b);
    for(int i=1;i<=d/i;i++)
    {
        if(d%i==0)
        {
            p[cnt++] = i;
            if(i!=d/i) p[cnt++] = d/i;
        }
    }
    sort(p,p+cnt);
}

int main()
{
    scanf("%d%d", &a, &b);
    solve(a,b);
    
    int n;
    cin>>n;
    while (n -- )
    {
        int l,r;
        cin>>l>>r;
        bool st = false;
        for(int i=cnt-1;i>=0;i--)
        {
            if(p[i]>=l && p[i]<=r)
            {
                printf("%d\n",p[i]);
                st = true;
                break;
            }
        }
        if(!st) puts("-1");
    }
    return 0;
}
```
###二分
```
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;
const int N = 1350;
int p[N];
int a,b,cnt;

int gcd(int a,int b)
{
    return b ? gcd(b,a%b) : a;
}

void solve(int a,int b)
{
    int d = gcd(a,b);
    for(int i=1;i<=d/i;i++)
    {
        if(d%i==0)
        {
            p[cnt++] = i;
            if(i!=d/i) p[cnt++] = d/i;
        }
    }
    sort(p,p+cnt);
}

int main()
{
    scanf("%d%d", &a, &b);
    solve(a,b);
    
    int n;
    cin>>n;
    while (n -- )
    {
        int l,r;
        cin>>l>>r;
        int L = 0,R = cnt - 1;
        while(L<R)
        {
            int mid = L + R + 1 >> 1;
            if(p[mid]<=r) L = mid;
            else R = mid - 1;
        }
        if(p[L]>=l) printf("%d\n",p[L]);
        else puts("-1");
    }
    return 0;
}
```

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

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

相关文章

Python人工智能应用---中文分词词频统计

目录 1.中文分词 2.循环分别处理列表 &#xff08;1&#xff09;分析 &#xff08;2&#xff09;代码解决 3.词袋模型的构建 &#xff08;1&#xff09;分析需求 &#xff08;2&#xff09;处理分析 1.先实现字符串的连接 2.字符串放到新的列表里面 4.提取高频词语 &…

WordPress建站教程:10步快速搭建个人网站

WordPress是一个广泛使用的内容管理系统&#xff08;CMS&#xff09;&#xff0c;凭借其用户友好的界面和大量可定制的主题和插件&#xff0c;为WordPress 提供了多功能性和灵活性&#xff0c;可用于创建各种类型的网站&#xff0c;包括个人博客、B2B企业网站、B2C外贸网站等&a…

【HTML】CSS样式(二)

上一篇我们学习了CSS基本样式和选择器&#xff0c;相信大家对于样式的使用有了初步认知。 本篇我们继续来学习CSS中的扩展选择器及CSS继承性&#xff0c;如何使用这些扩展选择器更好的帮助我们美化页面。 下一篇我们将会学习CSS中常用的属性。 喜欢的 【点赞】【关注】【收藏】…

非关系型数据库(缓存数据库)redis的性能管理

目录 一.Redis性能管理 1.Info Memory——查看Redis内存使用 2.内存碎片率 3. 内存使用率 4.内存回收key 二.缓存的穿透&#xff0c;击穿和雪崩 1.缓存的穿透 1.1 问题描述 1.2 缓存穿透发生的条件 1.3 缓存穿透发生的原因 1.4 解决方案 2 缓存的击穿 2.1 问题描…

Redis各个方面入门详解

目录 一、Redis介绍 二、分布式缓存常见的技术选型方案 三、Redis 和 Memcached 的区别和共同点 四、缓存数据的处理流程 五、Redis作为缓存的好处 六、Redis 常见数据结构以及使用场景 七、Redis单线程模型 八、Redis 给缓存数据设置过期时间 九、Redis判断数据过期的…

isc-dhcp-server DNS配置

我遇到一个有趣的问题&#xff0c;我先在一台Ubuntu服务器上使用isc-dhcp-server在其其中一个网口运行DHCP服务&#xff0c;然后我自己的笔记本电脑直连到这个网口&#xff0c;来上网。 本来直接就应该能上网&#xff0c;但是我的电脑只有在打开Clash时才能访问互联网&#xf…

基于多模态单细胞数据构建共表达网络-MuSeGNN

本篇来自于MuSe-GNN: Learning Unified Gene Representation From Multimodal Biological Graph Data的补充材料。主要目的是从多模态数据中构建共表达网络。作者概述了使用CS-CORE&#xff0c;scTransform和SPARK-X进行预处理步骤和网络构建的算法细节。 目前存在大量用于图谱…

卫星遥感影像统计农业产量、作物分类及面积

卫星遥感技术的广泛应用为农业领域带来了巨大的变革&#xff0c;其中&#xff0c;卫星遥感影像在农业产量估算方面的应用正成为一项关键技术。通过高分辨率的遥感数据&#xff0c;农业生产者可以更准确、及时地了解农田状况&#xff0c;实现精准农业管理&#xff0c;提高产量和…

软件杯 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

TiDB单机版安装和连接访问

TiDB单机版安装和连接访问 1、下载 $wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz 2、解压缩 $tar -zxvf tidb-latest-linux-amd64.tar.gz 3、启动TiDB 启动PD $./bin/pd-server --data-dirpd --log-filepd.log 启动tikv $./bin/tikv-server --pd…

路由器拨号失败解决方法

目录 一、遇到问题 二、测试 三、解决方法 &#xff08;一&#xff09;路由器先单插wan口设置 &#xff08;二&#xff09;mac地址替换 &#xff08;三&#xff09;更改路由器DNS 一、遇到问题 1 .在光猫使用桥接模式&#xff0c;由路由器进行拨号的时候&#xff0c;出现…

关于 QSound播放wav音频文件,播放失败“using null output device, none available” 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/137264493 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

【C语言】_文件内容操作:随机读写

目录 1. fseek 1.1 随机读文件 1.2 随机写文件 2. ftell 3. rewind 当以读方式打开一个存在且存有内容的文件时&#xff0c;文件指针会默认指向第一个元素。以在test4.txt文件中存储abcdef为例&#xff1a; int main() {//打开文件FILE* pf fopen("E:\\C_文件操作…

AI复活:商业新风口还是情感禁区?

随着人工智能技术的飞速发展&#xff0c;AI已经渗透到我们生活的方方面面&#xff0c;其中&#xff0c;“AI复活”服务作为新兴的技术应用&#xff0c;正逐渐走进大众视野。然而&#xff0c;这一技术带来的不仅是商业机会&#xff0c;更伴随着伦理和情感的争议。 “AI复活”服务…

NoSQL概述

NoSQL概述 目录 一、为什么用NoSQL 二、什么是NoSQL 三、经典应用分析 四、N o S Q L 数 据 模 型 简 介 五、NoSQL四大分类 六、CAP BASE 一、为什么用NoSQL 1、单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般不大&#xff0c;用单个数据库完全可以轻松应…

webrtcP2P通话流程

文章目录 webrtcP2P通话流程webrtc多对多 mesh方案webrtc多对多 mcu方案webrtc多对多 sfu方案webrtc案例测试getUserMediagetUserMedia基础示例-打开摄像头getUserMedia canvas - 截图 打开共享屏幕 webrtcP2P通话流程 在这里&#xff0c;stun服务器包括stun服务和turn转发服…

比nestjs更优雅的ts控制反转策略-依赖查找

一、Cabloy5.0内测预告 Cabloy5.0采用TS对整个全栈框架进行了脱胎换骨般的大重构&#xff0c;并且提供了更加优雅的ts控制反转策略&#xff0c;让我们的业务开发更加快捷顺畅 1. 新旧技术栈对比&#xff1a; 后端前端旧版js、egg2.0、mysqljs、vue2、framework7新版ts、egg3…

MSF永恒之蓝漏洞利用详解[漏洞验证利用及后渗透]【详细版】

漏洞原因 永恒之蓝利用了SMBv1的一个缺陷。SMB&#xff08;Server Message Block&#xff09;是一种在Windows环境中广泛使用的网络文件共享协议。这个漏洞允许未经授权的攻击者通过网络发送特制的数据包到目标系统&#xff0c;从而远程执行恶意代码 openvas漏洞扫描结果 使用…

03-自媒体文章发布

自媒体文章发布 1)自媒体前后端搭建 1.1)后台搭建 ①&#xff1a;资料中找到heima-leadnews-wemedia.zip解压 拷贝到heima-leadnews-service工程下&#xff0c;并指定子模块 执行leadnews-wemedia.sql脚本 添加对应的nacos配置 spring:datasource:driver-class-name: com…

Linux目录结构知识

一、认识Linux目录 1) Linux目录结构知识 1&#xff09; win: 目录顶点是盘符 C/D/E 。所有的目录结构都在不同的盘符下面&#xff0c;不同的盘之间不能沟通的。 2&#xff09; Linux: 目录顶点是 / &#xff0c;称为根。所有的目录结构都在根下面&#xff0c;他的目录之间都…