最大比例(数论 最大公约数 辗转相减法)[第七届蓝桥杯省赛C++A/B组]

news2025/1/17 1:04:02

题目如下:

在这里插入图片描述
在这里插入图片描述

题解 or 思路:

假设题中所给的数据为 b 1 , b 2 , b 3 , ⋅ ⋅ ⋅ , b n b_1,b_2,b_3,⋅⋅⋅,b_n b1,b2,b3,,bn,分别用第一项之后的项除以第一项,得到: b 2 b 1 , b 3 b 1 , ⋅ ⋅ ⋅ , b n b 1 \frac{b2}{b1},\frac{b3}{b1},⋅⋅⋅,\frac{bn}{b1} b1b2,b1b3,b1bn,由于给出的数都是等比数列中的数,所以( p q ) α 1 , ( p q ) α 2 , ⋅ ⋅ ⋅ , ( p q ) α n − 1 \frac{p}{q})^{α_1},(\frac{p}{q})^{α_2},···,(\frac{p}{q})^{α_{n-1}} qp)α1,(qp)α2⋅⋅⋅(qp)αn1。如果 ( p q ) k (\frac{p}{q})^{k} (qp)k为最大的公比,那么 k k k 应该为 α 1 , α 2 , ⋅ ⋅ ⋅ , α n − 1 α_1,α_2,⋅⋅⋅,α_{n−1} α1,α2αn1 的最大公约数。
需要满足的条件:

  • 保证 p p p q q q 互质
  • 保证 p p p q q q 不能再分成幂次的形式
    这样才能保证求得的k为准确的数。

辗转相减法应用:

辗转相除法可以用来求若干个形如 ( p q ) r i (\frac{p}{q})^{r_i} (qp)ri 的最大公约数

证明:

g c d ( p x , p y ) = p g c d ( x , y ) = p g c d ( y , x − y ) = g c d ( p y , p ( x − y ) ) = g c d ( p y , p x p y ) gcd(p^x, p^y) = p^{gcd(x, y)} = p^{gcd(y, x - y)} = gcd(p^y,p^{(x - y)}) = gcd(p^y, \frac{p^x}{p^y}) gcd(px,py)=pgcd(x,y)=pgcd(y,xy)=gcd(py,p(xy))=gcd(py,pypx)

注每一次递归都需要保证 x > y x > y x>y

时间复杂度: O ( n ) O(n) O(n)

AC 代码:

注:
a a a 数组记录分子, b b b 数组记录分母

#define int long long
const int N = 100009;
int a[109], b[109], s[109];
int n;
int gcd_sub(int x, int y)
{
    if (x < y)
        swap(x, y);
    if (y == 1)
        return x;
    return gcd_sub(y, x / y);
}
void solve()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> s[i];
    sort(s + 1, s + 1 + n);
    int cnt = 0;
    for (int i = 2; i <= n; i++)
        if (s[i] != s[i - 1])
        {
            int d = __gcd(s[i], s[1]);
            a[++cnt] = s[i] / d;
            b[cnt] = s[1] / d;
        }
    int x = a[1], y = b[1];
    for (int i = 2; i <= cnt; i++)
    {
        x = __gcd(x, a[i]);
        y = __gcd(y, b[i]);
    }
    cout << x << '/' << y << '\n';
}
signed main()
{
    buff;
    solve();
}

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

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

相关文章

【Axure教程】自动识别文件类型的上传列表

文件上传是系统中很常用的功能&#xff0c;所以今天作者就教大家在Axure中如何利用中继器&#xff0c;制作一个能自动识别常用的文件类型的上传列表。 一、效果展示 1、点击上传按钮&#xff0c;可以选择本地的文件进行上传 2、选择文件后&#xff0c;在上传列表中新增该文件…

学生用台灯应该选什么样的?看这一篇就够了~

学生在选购一款台灯时&#xff0c;最重要的考虑因素应该是什么&#xff1f;最重要是这款台灯是否真正护眼&#xff0c;价格和外观是次要的&#xff0c;可以根据预算、用途、家居风格来抉择&#xff0c;而是否护眼这一标准需要我们通过衡量台灯的光线指标来判断了。光线指标的五…

ORB-SLAM2 --- LoopClosing::SearchAndFuse函数

目录 1.函数作用 2. code及解析 3. ORBmatcher::Fuse函数解析&#xff08;闭环调用版&#xff09; 1.函数作用 将闭环相连关键帧组mvpLoopMapPoints 投影到当前关键帧组中&#xff0c;进行匹配&#xff0c;新增或替换当前关键帧组中KF的地图点。 2. code及解析 /*** brief 将…

第21章 随机游走

第21章 随机游走 随机游走的建模场景是某个对象按照随机选择的方向行走一个步数序列。 21.1赌徒破产 假设一个赌徒一开始有n美元赌注&#xff0c;他要进行一系列1美元投注。如果他赢得一局&#xff0c;则拿回他的赌注外加1美元。如果他输了&#xff0c;那么他将失去1美元。 …

MySQL中InnoDB的事务隔离

文章目录前言一、事务介绍二、事务的四大特性三、事务的隔离性四、事务隔离的实现前言 我们在实际开发中&#xff0c;执行某个业务&#xff0c;肯定不是简单的操作某一句SQL语句&#xff0c;而是多条SQL语句。那么这多条SQL语句必须是全部成功执行&#xff0c;或者全部失败。才…

[L1 - 10分合集]吃鱼还是吃肉

L1-063 吃鱼还是吃肉 分数 10 作者 陈越 单位 浙江大学 题目&#xff1a; 国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤&#xff1b;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。 现在你要根据小宝宝的身高体重&#xff0c;给出补充营养的建议…

最近发现关于计算机网络的1个秘密

最近闲着没啥事翻开之前谢希仁老师第7版的《计算机网络》这本书,结果发现了1个惊天的秘密。 首先是互联网与互连网的区别,一般我们常说的互联网是Internet,是指因特网,其起源于阿帕网。或许很多读者看到这里就觉得有什么秘密可言,不都是常识了吗?看你大惊小怪的。 我们不妨看看…

spring cloud、gradle、父子项目、微服务框架搭建---rabbitMQ延时队列(七)

总目录 https://preparedata.blog.csdn.net/article/details/120062997 文章目录总目录一、rabbit延时插件下载二、rabbit插件安装三、项目中配置延时队列四、定义消息通道五、生成消息六、监听消息&#xff0c;进行消费延时队列的配置是对上片文章的延伸扩展 https://prepare…

paddledetection推理代码结构

https://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.5/deploy/pipeline/README.mdhttps://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.5/deploy/pipeline/README.md GitHub - leeguandong/Xiaobao: videoclip&#xff0c;视频剪辑应用videocl…

Go 1.19.3 error原理简析

Go error是一个很痛的话题(真心难用) 标准库 error 的定义 // The error built-in interface type is the conventional interface for // representing an error condition, with the nil value representing no error. type error interface {Error() string }error 是一个…

windows10安装wireshark

win10安装wireshark并使用windows10安装wireshark下载WIRESHARK下载Win10Pcapwindows10安装wireshark 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知…

javaEE 初阶 — JUC(java.util.concurrent) 的常见类

文章目录1. Callable 接口1.1 Callable 的用法2. ReentrantLock2.1 ReentrantLock 的缺陷2.1 ReentrantLock 的优势3. 原子类4. 信号量 Semaphore5. CountDownLatch6. 相关面试题1. Callable 接口 类似于 Runnable 一样。 Runnable 用来描述一个任务&#xff0c;描述的任务没有…

【Spring源码】21. 关于循环依赖的N个问题

完成了applyMergedBeanDefinitionPostProcessors()方法&#xff0c;后面有一段关于判断Bean是否需要提前曝光的逻辑&#xff08;如下图红框框中部分&#xff09;在这段逻辑中涉及到了著名的循环依赖&#xff0c;提到循环依赖基本必讲三级缓存&#xff0c;好吧&#xff0c;这篇就…

CANOpen中SDO和PDO的COB-ID理解

CAN 总线是一种串行通信协议&#xff0c;具有较高的通信速率的和较强的抗干扰能力&#xff0c;可以作为现场总线应用于电磁噪声较大的场合。由于 CAN 总线本身只定义ISO/OSI 模型中的第一层&#xff08;物理层&#xff09;和第二层&#xff08;数据链路层&#xff09;&#xf…

(8)go-micro微服务Mysql配置

文章目录一 gorm介绍二 gorm安装1.1 下载依赖1.2 使用MySQL驱动三 CURD操作1. 查询1.1 单行查询1.2 多行查询2. 插入数据3. 更新数据4. 删除数据四 初始化连接五 使用六 最后一 gorm介绍 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口&#xff0c;并不提供具…

redis: jedis连接超时(需要手动注入连接超时检测的配置)

相关版本说明 服务端&#xff1a; redis_version: 6.2.8 客户端&#xff1a; springBoot: 2.7.7 jedis: 3.8.0 问题 偶发redis连接超时&#xff0c;刷新就又好了&#xff0c;服务日志错误信息如下&#xff1a; JedisConnectionException: Unexpected end of stream.原因 …

Linux利用httpd搭建局域网yum源

本例环境&#xff1a;vmwareworkstation16 proCentOS7.9 mast节点&#xff1a;192.168.195.110 用于配置httpd并发布本地yum源 node节点&#xff1a;192.168.195.111 用于验证mast节点的yum源是否可用 思路&#xff1a;1.在mast节点挂载/上传镜像后配置本地yum源 2.利用本…

JSP三种脚本

脚本可以编写Java语句、变量、方法或表达式。 1.普通脚本 语法: <% Java代码%> <% page contentType"text/html;charsetUTF-8" language"java" %><html><head> <title>Title</title></head><body>&l…

对u盘的分区进行删除和格式化

一、说明 当usb盘&#xff0c;或者SD卡用作启动盘后&#xff0c;将出现多个盘符、多个分区&#xff1b;若将此盘重新当文件盘&#xff0c;需要删除以前的分区&#xff0c;并重新格式化后&#xff0c;才能使用。 二、使用Diskpart在Windows 10中对USB进行分区删除 2.1 尝试磁盘…

重启之后,台式机网络不能连接怎么办

目录 1.问题 2.排查过程 3.心得 1.问题 前天电脑意外断电后,再启动发现网络变成了未连接状态.查看本地连接显示已启动,但IPv4和IPv6未连接.当时做了一些尝试,没有收到效果,直到今天问题才得以解决. 2.排查过程 Windows网络诊断为:DNS服务器未响应.后来花了一部分时间在DNS…